UNPKG

svelte-ast-print

Version:

Serialize Svelte AST nodes into stringified syntax. A.k.a parse in reverse.

72 lines 1.98 kB
/** * Printers related to CSS **rule** related AST nodes only. * @module svelte-ast-print/css/rule */ import * as char from "../_internal/char.js"; import { State } from "../_internal/shared.js"; import { CurlyBrackets } from "../_internal/wrapper.js"; import { printCSSSelectorList } from "./selector.js"; /** * @since 1.0.0 * @__NO_SIDE_EFFECTS__ */ export function printCSSBlock(n, opts = {}) { const st = State.get(n, opts); const brackets = new CurlyBrackets("mutliline"); for (const ch of n.children) { switch (ch.type) { case "Declaration": { brackets.insert(printCSSDeclaration(ch, opts)); break; } case "Rule": { brackets.insert(printCSSRule(ch, opts)); break; } case "Atrule": { brackets.insert(printCSSAtrule(ch, opts)); break; } } } st.add(brackets); return st.result; } /** * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model/CSS_Declaration} * * @since 1.0.0 * @__NO_SIDE_EFFECTS__ */ export function printCSSDeclaration(n, opts = {}) { const st = State.get(n, opts); st.add( // n.property, char.COLON, char.SPACE, n.value.split(/[\n|\t]+/g).join(char.SPACE), char.SEMI); return st.result; } /** * @since 1.0.0 * @__NO_SIDE_EFFECTS__ */ export function printCSSAtrule(n, opts = {}) { const st = State.get(n, opts); st.add(char.AT, n.name, char.SPACE, n.prelude); if (n.block) st.add(char.SPACE, printCSSBlock(n.block, opts)); else st.add(char.SEMI); return st.result; } /** * @since 1.0.0 * @__NO_SIDE_EFFECTS__ */ export function printCSSRule(n, opts = {}) { const st = State.get(n, opts); st.add( // printCSSSelectorList(n.prelude, opts), char.SPACE, printCSSBlock(n.block, opts)); return st.result; } //# sourceMappingURL=rule.js.map