Clazz.declarePackage ("JSV.common"); Clazz.load (null, "JSV.common.ScriptTokenizer", ["JU.PT"], function () { c$ = Clazz.decorateAsClass (function () { this.str = null; this.pt = -1; this.len = 0; this.isCmd = false; this.doCheck = true; Clazz.instantialize (this, arguments); }, JSV.common, "ScriptTokenizer"); Clazz.makeConstructor (c$, function (str, isCmd) { this.str = str; this.len = str.length; this.isCmd = isCmd; }, "~S,~B"); c$.nextStringToken = Clazz.defineMethod (c$, "nextStringToken", function (eachParam, removeQuotes) { var s = eachParam.nextToken (); return (removeQuotes && s.charAt (0) == '"' && s.endsWith ("\"") && s.length > 1 ? JU.PT.trimQuotes (s) : s); }, "JSV.common.ScriptTokenizer,~B"); Clazz.defineMethod (c$, "nextToken", function () { if (this.doCheck) this.hasMoreTokens (); var pt0 = this.pt; var inQuote = (this.str.charAt (this.pt) == '"'); while (++this.pt < this.len) { switch (this.str.charAt (this.pt)) { case '"': if (inQuote) { if (this.isCmd) { inQuote = false; continue; }this.pt++; break; }if (this.isCmd) inQuote = true; continue; case ' ': if (!this.isCmd && !inQuote) break; continue; case ';': case '\n': if (this.isCmd && !inQuote) break; continue; default: continue; } break; } this.doCheck = true; return this.str.substring (pt0, this.pt); }); Clazz.defineMethod (c$, "hasMoreTokens", function () { while (++this.pt < this.len) { switch (this.str.charAt (this.pt)) { case ' ': case ';': case '\n': continue; } break; } this.doCheck = false; return (this.pt < this.len); }); Clazz.defineMethod (c$, "getRemainingScript", function () { return this.str.substring (this.pt); }); });