diff options
Diffstat (limited to 'assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/index.js')
-rw-r--r-- | assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/index.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/index.js b/assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/index.js new file mode 100644 index 0000000..b723aaf --- /dev/null +++ b/assets/node_modules/stylelint/lib/rules/declaration-property-value-blacklist/index.js @@ -0,0 +1,56 @@ +'use strict'; + +const _ = require('lodash'); +const matchesStringOrRegExp = require('../../utils/matchesStringOrRegExp'); +const postcss = require('postcss'); +const report = require('../../utils/report'); +const ruleMessages = require('../../utils/ruleMessages'); +const validateOptions = require('../../utils/validateOptions'); + +const ruleName = 'declaration-property-value-blacklist'; + +const messages = ruleMessages(ruleName, { + rejected: (property, value) => `Unexpected value "${value}" for property "${property}"`, +}); + +function rule(blacklist) { + return (root, result) => { + const validOptions = validateOptions(result, ruleName, { + actual: blacklist, + possible: [_.isObject], + }); + + if (!validOptions) { + return; + } + + root.walkDecls((decl) => { + const prop = decl.prop; + const value = decl.value; + + const unprefixedProp = postcss.vendor.unprefixed(prop); + const propBlacklist = _.find(blacklist, (list, propIdentifier) => + matchesStringOrRegExp(unprefixedProp, propIdentifier), + ); + + if (_.isEmpty(propBlacklist)) { + return; + } + + if (!matchesStringOrRegExp(value, propBlacklist)) { + return; + } + + report({ + message: messages.rejected(prop, value), + node: decl, + result, + ruleName, + }); + }); + }; +} + +rule.ruleName = ruleName; +rule.messages = messages; +module.exports = rule; |