Files
react-native-devtools-frontend/node_modules/stylelint/lib/utils/functionArgumentsSearch.js
T
Tim van der Lippe efb716af67 Update linter packages
- Updates stylelint to 13.8.0
- Updates ESLint to 7.14.0
- Updates @typescript-eslint to 4.9.0

DISABLE_THIRD_PARTY_CHECK=NPM update
R=jacktfranklin@chromium.org

Change-Id: I207e204607ede782710e042c17d6510c7f696905
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2566806
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
2020-12-01 16:04:40 +00:00

42 lines
1005 B
JavaScript

'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.
*
* @param {string} source
* @param {string} functionName
* @param {Function} callback
*/
module.exports = function (source, functionName, callback) {
styleSearch(
{
source,
target: functionName,
functionNames: 'check',
},
(match) => {
if (source[match.endIndex] !== '(') {
return;
}
const parensMatch = balancedMatch('(', ')', source.substr(match.startIndex));
if (!parensMatch) {
throw new Error(`No parens match: "${source}"`);
}
callback(parensMatch.body, match.endIndex + 1);
},
);
};