123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 'use strict';
- const atRuleParamIndex = require('../utils/atRuleParamIndex');
- const report = require('../utils/report');
- const styleSearch = require('style-search');
- /**
- * @param {{
- * root: import('postcss').Root,
- * locationChecker: (args: { source: string, index: number, err: (message: string) => void }) => void,
- * fix: ((node: import('postcss').AtRule, index: number) => boolean) | null,
- * result: import('stylelint').PostcssResult,
- * checkedRuleName: string,
- * }} opts
- */
- module.exports = function mediaFeatureColonSpaceChecker(opts) {
- opts.root.walkAtRules(/^media$/i, (atRule) => {
- const params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
- styleSearch({ source: params, target: ':' }, (match) => {
- checkColon(params, match.startIndex, atRule);
- });
- });
- /**
- * @param {string} source
- * @param {number} index
- * @param {import('postcss').AtRule} node
- */
- function checkColon(source, index, node) {
- opts.locationChecker({
- source,
- index,
- err: (message) => {
- const colonIndex = index + atRuleParamIndex(node);
- if (opts.fix && opts.fix(node, colonIndex)) {
- return;
- }
- report({
- message,
- node,
- index: colonIndex,
- result: opts.result,
- ruleName: opts.checkedRuleName,
- });
- },
- });
- }
- };
|