X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=JSDOC%2FTokenStream.vala;h=10a8b98f75bd0a31a047f854b4ac73a04407ca71;hb=e80166c6012671cf8c2956f1fa5f943669bff60e;hp=837ce06b36dca27ce1abd0755389353588843d67;hpb=a6976f460dfd156bd14e289fa1ae905cb456b179;p=gnome.introspection-doc-generator diff --git a/JSDOC/TokenStream.vala b/JSDOC/TokenStream.vala index 837ce06..10a8b98 100644 --- a/JSDOC/TokenStream.vala +++ b/JSDOC/TokenStream.vala @@ -18,8 +18,8 @@ namespace JSDOC { public class TokenStream : Object { - Gee.ArrayList tokens; - int cursor; // where are we in the stream. + protected Gee.ArrayList tokens; + public int cursor; // where are we in the stream. public TokenStream(Gee.ArrayList tokens) { @@ -28,7 +28,10 @@ namespace JSDOC { this.rewind(); } - + public Gee.ArrayList toArray() + { + return this.tokens; + } public void rewind() { @@ -58,7 +61,7 @@ namespace JSDOC { if (i < 0) { return new Token("", "VOID", "START_OF_STREAM"); } - if (i > this.tokens.size) { + if (i >= this.tokens.size) { return new Token("", "VOID", "END_OF_STREAM"); } @@ -74,7 +77,7 @@ namespace JSDOC { i += (n < 0) ? -1 : 1; } - return new Token("", "VOID", "STREAM_ERROR"); // because null isn't an object and caller always expects an object + // return new Token("", "VOID", "STREAM_ERROR"); // because null isn't an object and caller always expects an object } @@ -121,7 +124,7 @@ namespace JSDOC { } return new Token("", "VOID", "END_OF_STREAM"); } - if (i > this.tokens.size) { + if (i >= this.tokens.size) { return new Token("", "VOID", "END_OF_STREAM"); } @@ -210,11 +213,11 @@ namespace JSDOC { * @param start {String} token name or data (eg. '{' * @param stop {String} (Optional) token name or data (eg. '}' */ - public Gee.ArrayList balance (string start, string stop = "") throws TokenStreamError + public Gee.ArrayList balance (string start, string in_stop = "") throws TokenStreamError { // accepts names or "{" etc.. - + var stop = in_stop; start = Lang.punc(start) == null ? start : Lang.punc(start); if (stop=="") { @@ -224,7 +227,7 @@ namespace JSDOC { if (stop == null) { throw new TokenStreamError.ArgumentError("balance called with invalid start/stop : %s",start); } - + debug("START=%s, STOP=%s \n", start,stop); var depth = 0; var got = new Gee.ArrayList(); var started = false; @@ -233,6 +236,7 @@ namespace JSDOC { Token token; while (null != (token = this.look(1,false))) { + debug("BALANCE: " + token.asString()); if (token.is(start)) { // Seed.print("balance: START : " + depth + " " + token.data); depth++; @@ -245,10 +249,12 @@ namespace JSDOC { if (token.is(stop)) { depth--; - // Seed.print("balance: STOP: " + depth + " " + token.data); + + print("balance (%d): STOP: %s\n" , depth , token.data); if (depth < 1) { return got; } + } if (null == this.next()) { break; @@ -309,6 +315,14 @@ namespace JSDOC { } } + + public void printRange(int start, int end) { + + for(var i = start; i < end +1; i++) { + print(this.tokens.get(i).asString()); + } + } + /* arrayToString : function(ar) { console.log(typeof(ar)); @@ -318,18 +332,29 @@ namespace JSDOC { }) return ret.join(''); }, - dump: function(start, end) + */ + public void dump(int start, int end) { - start = Math.max(start || 0, 0); - end = Math.min(end || this.tokens.length, this.tokens.length); - var out=''; + start = int.max(start , 0); + end = int.min(end, this.tokens.size); + var outs = "";; for (var i =start;i < end; i++) { - out += (this.tokens[i].outData == false) ? this.tokens[i].data : this.tokens[i].outData; - }; - print(out); + outs += (this.tokens[i].outData == "") ? this.tokens[i].data : this.tokens[i].outData; + } + print(outs); } - */ + + public void dumpAll(string indent) + { + for (var i = 0;i < this.tokens.size; i++) { + + this.tokens[i].dump(""); + } + + } + + } }