mirror of
https://github.com/thangisme/notes.git
synced 2024-11-04 19:57:16 -05:00
34 lines
880 B
JavaScript
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)
|
|
})
|
|
}
|