| '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 |