UNPKG

@efficientcss/stylelint-config-ecss

Version:

Linting rules for EfficientCSS

44 lines (35 loc) 1.1 kB
import stylelint from 'stylelint'; import printUrl from '../lib/printUrl.js'; const { createPlugin, utils: { report, ruleMessages } } = stylelint; const ruleName = 'ecss/content-margin'; const messages = ruleMessages(ruleName, { expected: 'Only vertical margins (top/bottom) can be applied to content tags.', }); const meta = { url: printUrl('content-margin') } const ruleFunction = (primaryOption, secondaryOption, context) => { return (postcssRoot, postcssResult) => { const textTagRegex = /^(.*((\s|>|\()(p|h1|h2|h3|h4|h5|h6|blockquote)))\)?$/; postcssRoot.walkRules((rule) => { rule.walkDecls(/^margin/, (decl) => { if (textTagRegex.test(rule.selector) && !/^(margin-top|margin-bottom|margin-block(?:-start|-end)?)$/.test(decl.prop)) { report({ message: messages.expected, messageArgs: [rule.selector, decl], node: decl, result: postcssResult, ruleName, }); } }); }); }; }; ruleFunction.ruleName = ruleName; ruleFunction.messages = messages; ruleFunction.meta = meta; export default createPlugin(ruleName, ruleFunction);