thingsboard/ui/node_modules/stylelint/lib/utils/functionArgumentsSearch.js

38 lines
922 B
JavaScript
Raw Normal View History

2020-05-19 11:43:42 +03:00
'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));
callback(parensMatch.body, match.endIndex + 1);
},
);
};