stylelint
Version:
A mighty, modern CSS linter.
55 lines (42 loc) • 961 B
JavaScript
/** @typedef {import('postcss').Rule} Rule */
/** @typedef {import('postcss').AtRule} AtRule */
/**
* @param {Rule | AtRule} statement
* @param {{
* noRawBefore?: boolean
* }} options
*
* @returns {string}
*/
module.exports = function (statement, options = {}) {
let result = '';
/** @type {Rule | undefined} */
let rule; /*?: postcss$rule*/
/** @type {AtRule | undefined} */
let atRule; /*?: postcss$atRule*/
if (statement.type === 'rule') {
rule = statement;
}
if (statement.type === 'atrule') {
atRule = statement;
}
if (!rule && !atRule) {
return result;
}
const before = statement.raws.before || '';
if (!options.noRawBefore) {
result += before;
}
if (rule) {
result += rule.selector;
}
if (atRule) {
result += `@${atRule.name}${atRule.raws.afterName || ''}${atRule.params}`;
}
const between = statement.raws.between;
if (between !== undefined) {
result += between;
}
return result;
};
;