30 lines
773 B
JavaScript
30 lines
773 B
JavaScript
|
|
var processSelectors = require('./process-selectors');
|
|
|
|
/**
|
|
* Returns the matches of the first capture group in the given regular
|
|
* expression in the specified rules (AST), without repetition
|
|
*
|
|
* @example
|
|
* var rules = getRulesFromCode('[href] { background: red }');
|
|
* var regexp = /\[(\w+)\]/g; // Notice the parenthesis!
|
|
* selectorUniqueMatches(rules, regexp);
|
|
* //> ['href']
|
|
*
|
|
* @param {Object[]} rules
|
|
* @param {RegExp} regexp
|
|
* @return {string[]}
|
|
*/
|
|
function selectorUniqueMatches(rules, regexp) {
|
|
var resultSet = {};
|
|
processSelectors(rules, function(selector) {
|
|
var match;
|
|
while (!!(match = regexp.exec(selector))) {
|
|
resultSet[match[1]] = true;
|
|
}
|
|
});
|
|
return Object.keys(resultSet);
|
|
}
|
|
|
|
module.exports = selectorUniqueMatches;
|