X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=blobdiff_plain;f=JSDOC%2FToken.vala;h=a3ba98b93aedfc0a691c9b7de794e3a16f94e0d6;hp=9d507441423db21a5f5bd406135fa5596b050785;hb=HEAD;hpb=b2307154a19f5eec25689a33d9008fa357212638 diff --git a/JSDOC/Token.vala b/JSDOC/Token.vala index 9d50744..a3ba98b 100644 --- a/JSDOC/Token.vala +++ b/JSDOC/Token.vala @@ -31,65 +31,112 @@ namespace JSDOC { int Token_id = 1; + + public class TokenKeyMap : Object { + public Token key; + public Gee.ArrayList vals; + + public TokenKeyMap() + { + this.key = new Token("","VOID", "VOID"); + this.vals = new Gee.ArrayList(); + } + + + } + public class Token : Object { - int id; + public int id; public string data; public string type; public string name; public int line; - public string prefix; + public string prefix; // white space prefix... (when outputing with WS) public string outData; - public string identifier; + public Identifier identifier; // used to stuff tokens together when building a tree.. public Gee.ArrayList> items; + // for a object definition, key -> array of tokens.. + public Gee.HashMap props; // props??? what's this??? - public Token(string data, string type, string name, int line) + public Token(string data, string type, string name, int line = -1) { this.data = data; this.type = type; this.name = name; this.line = line; this.prefix = ""; - this.outData = null; // used by packer/scopeparser + this.outData = ""; // used by packer/scopeparser this.identifier = null; // used by scope - this.id = tokid++; + this.id = Token_id++; this.items = new Gee.ArrayList>(); + this.props = new Gee.HashMap(); } public string asString() { - return "line:%d, type %s, name %s, data : %s , outData: %s".printf( + return "line:%d, id %d, type %s, data : %s, name %s, , outData: %s".printf( this.line, + this.id, this.type, - this.name, this.data, + this.name, this.outData == null ? "" : this.outData - ) + ); } + public void dump(string indent) + { + print("%s%s\n",indent, this.asString()); + if (this.items.size > 0) { + + for (var i = 0;i < this.items.size; i++) { + print("%s --ITEMS[%d] [ \n",indent,i); + for (var j = 0;j < this.items[i].size; j++) { + this.items[i][j].dump(indent + " "); + } + } + } + if (this.props.size > 0) { + var m = this.props.map_iterator(); + while(m.next()) { + print("%s --KEY %s :: \n",indent,m.get_key()); + var vals = m.get_value().vals; + for (var i = 0;i < vals.size; i++) { + + vals[i].dump(indent + " "); + } + } + + + } + + } + + public string toRaw(int lvl = 0) { var ret = this.data ; - forach(var ai in this.items ) { - + foreach(var ai in this.items ) { + // supposed to iterate properties??? string str = ""; - foreach( var it in ai) { - str += it.toRaw(lvl+1); - } + //foreach( var it in ai) { + // str += it.toRaw(lvl+1); + // } ret += str; } @@ -108,7 +155,7 @@ namespace JSDOC return this.prefix + ret; - }, + } /* toJS : function() { @@ -126,5 +173,6 @@ namespace JSDOC public bool is(string what) { return this.name == what || this.type == what; } -}); + } +} \ No newline at end of file