/* This file contains proprietary software owned by Motorola Mobility, Inc.
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
*/ /////////////////////////////////////////////////////////////////////// // Class Utils // Vector Utility functions /////////////////////////////////////////////////////////////////////// function ParseUtils( theStr ) { /////////////////////////////////////////////////////////////////////// // Instance variables /////////////////////////////////////////////////////////////////////// this._strBuffer = theStr; /////////////////////////////////////////////////////////////////////// // Property accessors /////////////////////////////////////////////////////////////////////// this.getBuffer = function() { return this._strBuffer; } this.setBuffer = function(b) { this._strBuffer = b; } /////////////////////////////////////////////////////////////////////// // Methods /////////////////////////////////////////////////////////////////////// this.nextValue = function( prop, endKeyArg, advanceBufferArg ) { if (!this._strBuffer) return; // make the 2 & 3rd argument optional. default is to advance the string var endKey = "\n", advanceBuffer = true; if (endKeyArg) endKey = endKeyArg; if (advanceBufferArg) advanceBuffer = advanceBufferArg; var iStart = this._strBuffer.indexOf( prop ); if (iStart < 0) return; var iEnd = this._strBuffer.indexOf( endKey, iStart ); if (iEnd < 0) throw new Error( "property " + prop + " improperly terminated: " + this._strBuffer); iStart += prop.length; var nChars = iEnd - iStart; var rtnStr = this._strBuffer.substr( iStart, nChars ); if (advanceBuffer) this._strBuffer = this._strBuffer.substr( iEnd + endKey.length ); return rtnStr; } this.nextToken = function() { if (!this._strBuffer) return; // find the limits var index = this._strBuffer.search( /\S/ ); // first non-whitespace character if (index > 0) this._strBuffer = this._strBuffer.slice(index); index = this._strBuffer.search( /\s/ ); // first whitespace character marking the end of the token var token; if (index > 0) { token = this._strBuffer.slice(0, index); this._strBuffer = this._strBuffer.slice( index ); } return token; } this.advancePastToken = function( token ) { var index = this._strBuffer.indexOf( token ); if (index < 0) console.log( "could not find token: " + token + " in string: " + this._strBuffer ); else this._strBuffer = this._strBuffer.substr( index + token.length ); } }