UNPKG

@stylistic/stylelint-plugin

Version:
68 lines (51 loc) 1.57 kB
import stylelint from "stylelint" import { addNamespace } from "../../utils/addNamespace/index.js" import { getRuleDocUrl } from "../../utils/getRuleDocUrl/index.js" import { selectorCombinatorSpaceChecker } from "../../utils/selectorCombinatorSpaceChecker/index.js" import { whitespaceChecker } from "../../utils/whitespaceChecker/index.js" let { utils: { ruleMessages, validateOptions } } = stylelint let shortName = `selector-combinator-space-after` export let ruleName = addNamespace(shortName) export let messages = ruleMessages(ruleName, { expectedAfter: (combinator) => `Expected single space after "${combinator}"`, rejectedAfter: (combinator) => `Unexpected whitespace after "${combinator}"`, }) export let meta = { url: getRuleDocUrl(shortName), fixable: true, } /** @type {import('stylelint').Rule} */ function rule (primary) { let checker = whitespaceChecker(`space`, primary, messages) return (root, result) => { let validOptions = validateOptions(result, ruleName, { actual: primary, possible: [`always`, `never`], }) if (!validOptions) { return } selectorCombinatorSpaceChecker({ root, result, locationChecker: checker.after, locationType: `after`, checkedRuleName: ruleName, fix: (combinator) => { if (primary === `always`) { combinator.spaces.after = ` ` return true } if (primary === `never`) { combinator.spaces.after = `` return true } return false }, }) } } rule.ruleName = ruleName rule.messages = messages rule.meta = meta export default rule