Skip to content

Instantly share code, notes, and snippets.

@Raynos
Created December 13, 2011 19:34
Show Gist options
  • Select an option

  • Save Raynos/1473536 to your computer and use it in GitHub Desktop.

Select an option

Save Raynos/1473536 to your computer and use it in GitHub Desktop.

Revisions

  1. Raynos revised this gist Mar 3, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion iterateWalk.js
    Original file line number Diff line number Diff line change
    @@ -12,7 +12,7 @@ function iterativelyWalk(nodes, cb) {
    }

    if (node.childNodes.length) {
    nodes = slice.call(node.childNodes).concat(nodes);
    nodes = slice.call(node.childNodes).concat(nodes)
    }
    }
    }
  2. Raynos revised this gist Mar 3, 2012. 1 changed file with 15 additions and 12 deletions.
    27 changes: 15 additions & 12 deletions iterateWalk.js
    Original file line number Diff line number Diff line change
    @@ -1,15 +1,18 @@
    function walk(nodes, cb) {
    var node,
    last,
    ret,
    i = 0

    while (node = nodes[i++]) {
    do {
    var slice = Array.prototype.slice

    function iterativelyWalk(nodes, cb) {
    nodes = slice.call(nodes)

    while(nodes.length) {
    var node = nodes.shift(),
    ret = cb(node)
    if (ret) {
    return ret
    }
    } while (node = node.firstChild)

    if (ret) {
    return ret
    }

    if (node.childNodes.length) {
    nodes = slice.call(node.childNodes).concat(nodes);
    }
    }
    }
  3. Raynos revised this gist Mar 3, 2012. 1 changed file with 3 additions and 5 deletions.
    8 changes: 3 additions & 5 deletions iterateWalk.js
    Original file line number Diff line number Diff line change
    @@ -1,17 +1,15 @@
    function walk(nodes, cb) {
    var node = nodes[0],
    var node,
    last,
    ret,
    i = 0

    do {
    last = node
    while (node = nodes[i++]) {
    do {
    ret = cb(node)
    if (ret) {
    return ret
    }
    } while (node = node.firstChild)
    node = last
    } while (node = nodes[++i])
    }
    }
  4. Raynos revised this gist Mar 3, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion iterateWalk.js
    Original file line number Diff line number Diff line change
    @@ -9,7 +9,7 @@ function walk(nodes, cb) {
    do {
    ret = cb(node)
    if (ret) {
    return ret;
    return ret
    }
    } while (node = node.firstChild)
    node = last
  5. Raynos revised this gist Mar 3, 2012. 2 changed files with 25 additions and 6 deletions.
    17 changes: 17 additions & 0 deletions iterateWalk.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,17 @@
    function walk(nodes, cb) {
    var node = nodes[0],
    last,
    ret,
    i = 0

    do {
    last = node
    do {
    ret = cb(node)
    if (ret) {
    return ret;
    }
    } while (node = node.firstChild)
    node = last
    } while (node = nodes[++i])
    }
    14 changes: 8 additions & 6 deletions recursivelyWalk.js
    Original file line number Diff line number Diff line change
    @@ -1,14 +1,16 @@
    function recursivelyWalk(nodes, cb) {
    for (var i = 0, len = nodes.length; i < len; i++) {
    var node = nodes[i];
    var ret = cb(node);
    var node = nodes[i],
    ret = cb(node)

    if (ret) {
    return ret;
    return ret
    }
    if (node.childNodes && node.childNodes.length) {
    var ret = recursivelyWalk(node.childNodes, cb);

    if (node.childNodes.length) {
    var ret = recursivelyWalk(node.childNodes, cb)
    if (ret) {
    return ret;
    return ret
    }
    }
    }
  6. Raynos created this gist Dec 13, 2011.
    15 changes: 15 additions & 0 deletions recursivelyWalk.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    function recursivelyWalk(nodes, cb) {
    for (var i = 0, len = nodes.length; i < len; i++) {
    var node = nodes[i];
    var ret = cb(node);
    if (ret) {
    return ret;
    }
    if (node.childNodes && node.childNodes.length) {
    var ret = recursivelyWalk(node.childNodes, cb);
    if (ret) {
    return ret;
    }
    }
    }
    }