notes/node_modules/stylelint/lib/utils/functionArgumentsSearch.js

34 lines
880 B
JavaScript

/* @flow */
"use strict"
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)
})
}