/* @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) }) }