From e34bdfc96dcd2848b884250d27a0635e93168b09 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Tue, 1 Jul 2014 17:25:10 -0700 Subject: [PATCH] Revert "Revert "Change filtering model again to allow more complex filters."" This reverts commit 0f86637a6c7f6d10ffc23b429a62b1bfa0bdac7b. --- grammars/mediawiki.js | 8 +++----- recentrunes.js | 18 ++++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/grammars/mediawiki.js b/grammars/mediawiki.js index bfacdba..25800db 100644 --- a/grammars/mediawiki.js +++ b/grammars/mediawiki.js @@ -293,8 +293,6 @@ mediawiki = rr.Parser({ 'main': rr.Node('wikidoc', rr.Sequence( rr.ZeroOrMore(rr.Ref('paragraph')), rr.EndOfText())) -}, { - 'bi': [ - rr.SplitTagAndNest('b', 'i') - ] -}); +}, [ + rr.SplitTagAndNest('bi', ['b', 'i']) +]); diff --git a/recentrunes.js b/recentrunes.js index 1e18bd8..91fddae 100644 --- a/recentrunes.js +++ b/recentrunes.js @@ -726,15 +726,18 @@ rr.SingleLineText = function() { /** - * @param {...string} var_args + * @param {string} originalName + * @param {Array.} newNames * @return {rr.typeFilter} */ -rr.SplitTagAndNest = function(var_args) { - var hierarchy = Array.prototype.slice.call(arguments); +rr.SplitTagAndNest = function(originalName, newNames) { return function(node) { + if (node.nodeName.toLowerCase() != originalName) { + return; + } var outerNode, innerNode; - for (var i = 0; i < hierarchy.length; i++) { - var newNode = document.createElement(hierarchy[i]); + for (var i = 0; i < newNames.length; i++) { + var newNode = document.createElement(newNames[i]); if (i == 0) { outerNode = innerNode = newNode; } else { @@ -759,9 +762,8 @@ rr.SplitTagAndNest = function(var_args) { * @param {Object.} filters */ rr.ApplyFilters = function(node, filters) { - var nodeFilters = filters[node.nodeName.toLowerCase()] || []; - for (var i = 0; i < nodeFilters.length; i++) { - nodeFilters[i](node); + for (var i = 0; i < filters.length; i++) { + filters[i](node); } for (var i = 0; i < node.childNodes.length; i++) { rr.ApplyFilters(node.childNodes[i], filters);