/* <copyright> This file contains proprietary software owned by Motorola Mobility, Inc.<br/> No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. </copyright> */ var MaterialParser = function MaterialParser( theStr ) { this._strBuffer = theStr; 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 ); } } }; if (typeof exports === "object") { exports.MaterialParser = MaterialParser; }