stylelint-scss
Version:
A collection of SCSS specific rules for stylelint
30 lines (24 loc) • 880 B
JavaScript
import { utils } from "stylelint"
import { namespace } from "../../utils"
export const ruleName = namespace("at-extend-no-missing-placeholder")
export const messages = utils.ruleMessages(ruleName, {
rejected: "Expected a placeholder selector (e.g. %placeholder) to be used in @extend",
})
export default function (actual) {
return function (root, result) {
const validOptions = utils.validateOptions(result, ruleName, { actual })
if (!validOptions) { return }
root.walkAtRules("extend", atrule => {
const isPlaceholder = atrule.params.trim()[0] === "%"
const isInterpolation = (/^#{.+}/).test(atrule.params.trim())
if (!isPlaceholder && !isInterpolation) {
utils.report({
ruleName,
result,
node: atrule,
message: messages.rejected,
})
}
})
}
}