summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-01-13 12:19:07 +0200
committerAlon Levy <alon@pobox.com>2015-01-13 12:28:57 +0200
commitc7d9b0ff4b0a558e70cd56419c53975e15d71ec2 (patch)
tree1ae9dd33a537f6dffdcad9f3e1aef844b5ccab86
parent25162c7b9e483f7a11738b70144a3db34694bb13 (diff)
client/graph: find_node__* default to recursion but optional
-rw-r--r--src/client/model/graph.js22
-rw-r--r--src/client/textanalysis.js5
2 files changed, 17 insertions, 10 deletions
diff --git a/src/client/model/graph.js b/src/client/model/graph.js
index b1afb634..2eb358c7 100644
--- a/src/client/model/graph.js
+++ b/src/client/model/graph.js
@@ -598,15 +598,16 @@ function Graph(spec) {
/**
* return node whose id matches the given id or undefined if no node was found
*/
- var find_node__by_id = function(id) {
- if (base) {
- var base_node = base.find_node__by_id(id);
+ var find_node__by_id = function(id, recursive) {
+ // default to recursion
+ recursive = recursive === undefined ? true : recursive;
+ if (recursive && base) {
+ var base_node = base.find_node__by_id(id, recursive);
if (base_node) {
- console.log('!!! returning base node');
return base_node;
}
}
- return id_to_node_map[id];
+ return id_to_node_map[id] || null;
}
this.find_node__by_id = find_node__by_id;
@@ -623,12 +624,21 @@ function Graph(spec) {
return ret;
}
- var find_node__by_name = function(name) {
+ var find_node__by_name = function(name, recursive) {
+ // default to recursion
+ recursive = recursive === undefined ? true : recursive;
+ if (recursive && base) {
+ var node = base.find_node__by_name(name, true);
+ if (node !== null) {
+ return node;
+ }
+ }
for (var k in id_to_node_map) {
if (compareNames(id_to_node_map[k].name, name)) {
return id_to_node_map[k];
}
}
+ return null;
}
this.find_node__by_name = find_node__by_name;
diff --git a/src/client/textanalysis.js b/src/client/textanalysis.js
index 0160ed7b..0c557412 100644
--- a/src/client/textanalysis.js
+++ b/src/client/textanalysis.js
@@ -477,10 +477,7 @@ var textAnalyser = function (spec) {
for (j = i; j >= 0 && tokens[j] === undefined || tokens[j].token !== '#'; --j) {}
name = tokens[j + 1] ? tokens[j + 1].token : NEW_NODE_NAME;
node = edit_graph.find_node__by_name(name);
- if (node === undefined) {
- // return the first node by default
- util.assert(node !== undefined, "can't find node");
- }
+ util.assert(node !== undefined, "can't find node");
return node;
}