UNPKG

961 BJavaScriptView Raw
1'use strict';
2
3/** @typedef {import('postcss').Rule} Rule */
4/** @typedef {import('postcss').AtRule} AtRule */
5
6/**
7 * @param {Rule | AtRule} statement
8 * @param {{
9 * noRawBefore?: boolean
10 * }} options
11 *
12 * @returns {string}
13 */
14module.exports = function (statement, options = {}) {
15 let result = '';
16 /** @type {Rule | undefined} */
17 let rule; /*?: postcss$rule*/
18 /** @type {AtRule | undefined} */
19 let atRule; /*?: postcss$atRule*/
20
21 if (statement.type === 'rule') {
22 rule = statement;
23 }
24
25 if (statement.type === 'atrule') {
26 atRule = statement;
27 }
28
29 if (!rule && !atRule) {
30 return result;
31 }
32
33 const before = statement.raws.before || '';
34
35 if (!options.noRawBefore) {
36 result += before;
37 }
38
39 if (rule) {
40 result += rule.selector;
41 }
42
43 if (atRule) {
44 result += `@${atRule.name}${atRule.raws.afterName || ''}${atRule.params}`;
45 }
46
47 const between = statement.raws.between;
48
49 if (between !== undefined) {
50 result += between;
51 }
52
53 return result;
54};