X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=src%2FJsRender%2FNode.vala;h=cd101190f84b60f4572a2e350cae2d9021e8df46;hb=HEAD;hp=76d2ceb2fd45d3c62d3ef3284811c5a5d5af250c;hpb=e625ed224cbdb3691eff409277253dcd2890fada;p=app.Builder.js diff --git a/src/JsRender/Node.vala b/src/JsRender/Node.vala index 76d2ceb2f..cd101190f 100644 --- a/src/JsRender/Node.vala +++ b/src/JsRender/Node.vala @@ -132,7 +132,7 @@ public class JsRender.Node : Object { public void setNodeLine(int line, Node node) { //print("Add node @ %d\n", line); - if (this.node_line_map.has_key(line)) { + if (this.node_lines_map.has_key(line)) { return; } this.node_lines.add(line); @@ -141,14 +141,20 @@ public class JsRender.Node : Object { } public void setLine(int line, string type, string prop) { - this.lines.add(line); + if (this.line_map.has_key(line)) { + if (this.line_map.get(line) != "e:" ) { + return; + } + } else { + this.lines.add(line); + } this.line_map.set(line, type + ":" + prop); GLib.debug("setLine %d, %s", line, type + ":" + prop); } public void sortLines() { //print("sortLines\n"); this.lines.sort((a,b) => { - return (int)b-(int)a; + return (int)a-(int)b; }); this.node_lines.sort((a,b) => { return (int)a-(int)b; @@ -177,15 +183,24 @@ public class JsRender.Node : Object { break; } if (l > -1) { + var ret = this.node_lines_map.get(l); + if (line > ret.line_end) { + return null; + } //print("RETURNING NODE ON LINE %d", l); - return this.node_lines_map.get(l); + return ret; } return null; } if (l > -1) { + var ret = this.node_lines_map.get(l); + if (line > ret.line_end) { + return null; + } //print("RETURNING NODE ON LINE %d", l); - return this.node_lines_map.get(l); + return ret; + } return null; @@ -226,6 +241,26 @@ public class JsRender.Node : Object { return null; } + + public bool getPropertyRange(string prop, out int start, out int end) + { + start = -1; + foreach(int el in this.lines) { + if (start < 0) { + if (this.line_map.get(el) == prop) { + start = el; + end = el; + } + continue; + } + end = el -1; + break; + } + return start > -1; + + + } + public void dumpProps(string indent = "") { print("%s:\n" , this.fqn());