implement optional filtering in hyperjson
Implemented via callback, return falsey if you want to filter an element and all of its children from the serialized result.
This commit is contained in:
parent
1bd5cb9e27
commit
0d33af773f
@ -47,13 +47,20 @@ define([], function () {
|
||||
return x;
|
||||
};
|
||||
|
||||
var DOM2HyperJSON = function(el){
|
||||
var DOM2HyperJSON = function(el, predicate){
|
||||
if(!el.tagName && el.nodeType === Node.TEXT_NODE){
|
||||
return el.textContent;
|
||||
}
|
||||
if(!el.attributes){
|
||||
return;
|
||||
}
|
||||
|
||||
if (predicate) {
|
||||
if (!predicate(el)) {
|
||||
// shortcircuit
|
||||
return;
|
||||
}
|
||||
}
|
||||
var attributes = {};
|
||||
|
||||
var i = 0;
|
||||
@ -102,10 +109,12 @@ define([], function () {
|
||||
|
||||
// js hint complains if we use 'var' here
|
||||
i = 0;
|
||||
|
||||
for(; i < el.childNodes.length; i++){
|
||||
children.push(DOM2HyperJSON(el.childNodes[i]));
|
||||
children.push(DOM2HyperJSON(el.childNodes[i], predicate));
|
||||
}
|
||||
result.push(children);
|
||||
|
||||
result.push(children.filter(isTruthy));
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user