--- /dev/null
+/* @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);
+ }
+ );
+};