stylelint
Version:
A mighty, modern CSS linter.
35 lines (30 loc) • 884 B
JavaScript
/* @flow */
;
const balancedMatch = require('balanced-match');
const styleSearch = require('style-search');
/**
* Search a CSS string for functions by name.
* For every match, invoke the callback, passing the function's
* "argument(s) string" (whatever is inside the parentheses)
* as an argument.
*
* Callback will be called once for every matching function found,
* with the function's "argument(s) string" and its starting index
* as the arguments.
*/
module.exports = function(source /*: string*/, functionName /*: string*/, callback /*: Function*/) {
styleSearch(
{
source,
target: functionName,
functionNames: 'check',
},
(match) => {
if (source[match.endIndex] !== '(') {
return;
}
const parensMatch = balancedMatch('(', ')', source.substr(match.startIndex));
callback(parensMatch.body, match.endIndex + 1);
},
);
};