23 lines
611 B
JavaScript
23 lines
611 B
JavaScript
'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
|