You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

22 lines
611 B

'use strict'
const implementation = {
isTag: node => node !== undefined && 'name' in node,
getAttributeValue: ( elem, name ) => {
if( implementation.isTag( elem ) && elem.attribs ) return elem.attribs[ name ]
},
getChildren: node => node.children,
getName: elem => {
if( implementation.isTag( elem ) ) return elem.name
},
getParent: node => node.parent,
getText: node => node.children.map( child => {
if( child.text ) return child.text
if( implementation.isTag( child ) ) return implementation.getText( child )
return ''
}).join( '' )
}
module.exports = implementation