Simple callback delegator based on DOM Node type
npm install handle-node








Simple callback delegator based on DOM Node type.
Provides an alternative to switches, numeric constant-based delegation, and
DOM NodeIterators or TreeWalkers.
``shell`
npm install handle-node
`js`
import handleNode from 'handle-node';
`js`
const handleNode = require('handle-node');
`html`
`html`
Supply a node followed by a handler object whose all optional properties
(human-readable Node type names) should be set to a callback which will
be passed the supplied Node and, always as the last argument, a reference
to the object on which the callbacks exist. The return value will be
undefined if a handler is missing, but otherwise will be the result of
invoking the callback which corresponds to the supplied node's type.
Here is a demonstration reimplementing textContent (if only element
and text types are known to be present):
`jstextSerializer
const textContent = handleNode(node, { // This object is `
element ({childNodes}, textSerializer) {
return [...childNodes].reduce((str, node) => {
return str + handleNode(node, textSerializer);
}, '');
},
text: ({nodeValue}) => nodeValue
});
Other arguments can also be passed in after the
handler object, and these will also be supplied to the callbacks:
`jstextSerializer
const textContent = handleNode(
node,
{ // This object is `
element ({childNodes}, arg1, arg2, textSerializer) {
return [...childNodes].reduce((str, node) => {
return str + handleNode(node, arg1, arg2, textSerializer);
}, '');
},
text: ({nodeValue}, arg1, arg2) => nodeValue
}, arg1, arg2
);
The handler object can take the following optional properties:
- elementattribute
- text
- cdata
- entityReference
- entity
- processingInstruction
- comment
- document
- documentType
- documentFragment
- notation`
-