X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=JSDOC%2FTokenReader.js;h=173e67c6a38c69d545c13276c473b0131877737b;hb=235202579e42da12c853e19b81e241cf1b145146;hp=33482f141d88fa676e5e85818e8dc2997b280a1d;hpb=eda765b4b969145bc34a582a37aa9a40e83caaa7;p=gnome.introspection-doc-generator diff --git a/JSDOC/TokenReader.js b/JSDOC/TokenReader.js index 33482f1..173e67c 100644 --- a/JSDOC/TokenReader.js +++ b/JSDOC/TokenReader.js @@ -2,7 +2,7 @@ XObject = imports.XObject.XObject; -console = imports.console..console; +console = imports.console.console; Token = imports.Token.Token; @@ -23,11 +23,18 @@ TokenReader = XObject.define( }, Object, { - + collapseWhite : false, // only reduces white space... /** - @type {JSDOC.Token[]} + * tokenize a stream + * @return {Array} of tokens + * + * ts = new TextStream(File.read(str)); + * tr = TokenReader({ keepComments : true, keepWhite : true }); + * tr.tokenize(ts) + * */ + tokenize : function(/**JSDOC.TextStream*/stream) { @@ -85,12 +92,13 @@ TokenReader = XObject.define( } var n = found.split('.'); var p = false; + var _this = this; n.forEach(function(nm) { if (p) { - tokens.push(new Token('.', "PUNC", "DOT", this.line)); + tokens.push(new Token('.', "PUNC", "DOT", _this.line)); } p=true; - tokens.push(new Token(nm, "NAME", "NAME", this.line)); + tokens.push(new Token(nm, "NAME", "NAME", _this.line)); }); return true; @@ -146,13 +154,22 @@ TokenReader = XObject.define( this.line++; found += stream.next(); } - + this.line++; if (found === "") { return false; } else { - if (this.collapseWhite) found = "\n"; - if (this.keepWhite) tokens.push(new Token(found, "WHIT", "NEWLINE", this.line)); + if (this.collapseWhite) { + found = "\n"; + } + if (this.keepWhite) { + var last = tokens.pop(); + if (last.name != "WHIT") { + tokens.push(last); + } + + tokens.push(new Token(found, "WHIT", "NEWLINE", this.line)); + } return true; } },