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.
23 lines
611 B
23 lines
611 B
2 years ago
|
'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
|