UNPKG

stylelint-sassdoc

Version:

stylelint plugin to check scss files for a valid sassdoc documentation Credits to https://github.com/anneangersbach

62 lines (56 loc) 1.94 kB
const stylelint = require('stylelint'); const ruleName = 'sassdoc/atReturn'; const { checkCommentsForReturn } = require('../../utils'); const messages = stylelint.utils.ruleMessages(ruleName, { expected: (results) => `SassDoc: Expected exactly {1} @return with {type} but found {${results.length}}.`, expectedType: 'SassDoc: @return must have a type.', }); module.exports = stylelint.createPlugin(ruleName, (actual) => (root, result) => { const validOptions = stylelint.utils.validateOptions(result, ruleName, { actual, }); if (!validOptions) { return; } // walk all functions root.walkAtRules('function', (atRule) => { let results = []; // stop if it's a private function if (atRule.parent !== root || atRule.params[0] === '_') { return; } // read comments for @return results = checkCommentsForReturn(atRule); // found no return if (results.length < 1) { stylelint.utils.report({ message: messages.expected(results), node: atRule, result, ruleName, }); } // found more than 1 return results.forEach((returnComment) => { if (results.length > 1) { stylelint.utils.report({ message: messages.expected, node: returnComment.node, result, ruleName, }); } // found a return without type if (!returnComment.hasType) { stylelint.utils.report({ message: messages.expectedType, node: returnComment.node, result, ruleName, }); } }); }); }); module.exports.ruleName = ruleName; module.exports.messages = messages;