Files
30-seconds-of-code/node_modules/unist-util-select/index.js
2019-08-20 15:52:05 +02:00

41 lines
937 B
JavaScript

'use strict';
var parseSelector = require('./lib/selector'),
matchSelector = require('./lib/select');
var debug = require('debug')('unist-util-select');
var select = function select (ast, selector) {
if (arguments.length == 1) {
return select.bind(this, ast);
}
debug('Selector: %j', selector);
selector = parseSelector(selector);
debug('AST: %s',
JSON.stringify(selector, null, 2).replace(/(^|\n)/g, '\n '));
return selector ? matchSelector[selector.type](selector, ast) : [];
};
select.one = function selectOne (ast, selector) {
if (arguments.length == 1) {
return selectOne.bind(this, ast);
}
var nodes = select(ast, selector);
if (!nodes.length) {
throw Error('Node not found by ' + JSON.stringify(selector));
}
if (nodes.length > 1) {
throw Error('Node matched by ' + JSON.stringify(selector) + ' is not unique');
}
return nodes[0];
};
module.exports = select;