stylelint-sassdoc
Version:
stylelint plugin to check scss files for a valid sassdoc documentation Credits to https://github.com/anneangersbach
39 lines (33 loc) • 1.27 kB
JavaScript
const stylelint = require('stylelint');
const isVariableDeclaration = require('../../utils/isVariableDeclaration');
const adjacentLineIsSCSSComment = require('../../utils/adjacentLineIsSCSSComment');
const ruleName = 'sassdoc/variable-is-documented';
const messages = stylelint.utils.ruleMessages(ruleName, {
expected: (node) => `Sassdoc: Expected variable "${node.prop}" to be documented by preceding Sassdoc comment.`,
});
module.exports = stylelint.createPlugin(ruleName, (actual) => (root, result) => {
const validOptions = stylelint.utils.validateOptions(result, ruleName, {
actual,
});
if (!validOptions) {
return;
}
root.walkDecls((decl) => {
// declaration is not a variable
// or is nested in a code block (function, mixin, etc)
// or it is private
if (!isVariableDeclaration(decl) || decl.parent !== root || decl.prop[1] === '_') {
return;
}
if (!adjacentLineIsSCSSComment(decl)) {
stylelint.utils.report({
message: messages.expected(decl),
node: decl,
result,
ruleName,
});
}
});
});
module.exports.ruleName = ruleName;
module.exports.messages = messages;