Sha256: ba479abd6d425d6f1adb901db627898cc2f15f01c02f3b0f96213a8e9eea0ced
Contents?: true
Size: 1.26 KB
Versions: 23
Compression:
Stored size: 1.26 KB
Contents
'use strict'; const declarationValueIndex = require('../../utils/declarationValueIndex'); const isValidHex = require('../../utils/isValidHex'); const report = require('../../utils/report'); const ruleMessages = require('../../utils/ruleMessages'); const validateOptions = require('../../utils/validateOptions'); const valueParser = require('postcss-value-parser'); const ruleName = 'color-no-invalid-hex'; const messages = ruleMessages(ruleName, { rejected: (hex) => `Unexpected invalid hex color "${hex}"`, }); function rule(actual) { return (root, result) => { const validOptions = validateOptions(result, ruleName, { actual }); if (!validOptions) { return; } root.walkDecls((decl) => { valueParser(decl.value).walk(({ value, type, sourceIndex }) => { if (type === 'function' && value.endsWith('url')) return false; if (type !== 'word') return; const hexMatch = /^#[0-9A-Za-z]+/.exec(value); if (!hexMatch) return; const hexValue = hexMatch[0]; if (isValidHex(hexValue)) return; report({ message: messages.rejected(hexValue), node: decl, index: declarationValueIndex(decl) + sourceIndex, result, ruleName, }); }); }); }; } rule.ruleName = ruleName; rule.messages = messages; module.exports = rule;
Version data entries
23 entries across 23 versions & 1 rubygems