'use strict';
|
|
var baseCssAdapter = require('css-select-base-adapter');
|
|
/**
|
* DOMUtils API for SVGO AST (used by css-select)
|
*/
|
var svgoCssSelectAdapterMin = {
|
|
// is the node a tag?
|
// isTag: ( node:Node ) => isTag:Boolean
|
isTag: function(node) {
|
return node.isElem();
|
},
|
|
// get the parent of the node
|
// getParent: ( node:Node ) => parentNode:Node
|
// returns null when no parent exists
|
getParent: function(node) {
|
return node.parentNode || null;
|
},
|
|
// get the node's children
|
// getChildren: ( node:Node ) => children:[Node]
|
getChildren: function(node) {
|
return node.content || [];
|
},
|
|
// get the name of the tag
|
// getName: ( elem:ElementNode ) => tagName:String
|
getName: function(elemAst) {
|
return elemAst.elem;
|
},
|
|
// get the text content of the node, and its children if it has any
|
// getText: ( node:Node ) => text:String
|
// returns empty string when there is no text
|
getText: function(node) {
|
return node.content[0].text || node.content[0].cdata || '';
|
},
|
|
// get the attribute value
|
// getAttributeValue: ( elem:ElementNode, name:String ) => value:String
|
// returns null when attribute doesn't exist
|
getAttributeValue: function(elem, name) {
|
return elem.hasAttr(name) ? elem.attr(name).value : null;
|
}
|
};
|
|
// use base adapter for default implementation
|
var svgoCssSelectAdapter = baseCssAdapter(svgoCssSelectAdapterMin);
|
|
module.exports = svgoCssSelectAdapter;
|