1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Node-specific formatting for Svelte template nodes
//
// ## Module Organization
//
// The `_doc` suffix distinguishes doc-IR builders; the whole template fragment
// (root and nested) renders through these builders — there is no separate buffer
// printer (the root-fragment renderer lives in `crate::printer::mod`).
//
// - **fragment_doc.rs** - Core doc-based fragment formatting (sibling walk, node dispatch)
// - **fragment_boxless.rs** - Nested `<script>` / `<style>` glue analysis (per-fragment flags, edge index)
// - **fragment_glue_doc.rs** - Byte-glue predicates + glued/welded run docs (unbreakable units)
// - **fragment_text_doc.rs** - Text-child handling + word-fill doc construction
// - **blocks_doc.rs** - Doc-based formatting for control flow blocks ({#if}, {#each}, etc.)
// - **tags_doc.rs** - Doc-based formatting for template tags ({@html}, {@const}, etc.)
// - **element_doc.rs** - Doc-based formatting for regular HTML/component elements
// - **element_analysis.rs** - Element analysis/classification predicates (layout, multiline, boundary modes)
// - **element_ws_sensitive_doc.rs** - Doc-based formatting for whitespace-sensitive elements (pre, textarea)
// - **special_doc.rs** - Doc-based formatting for svelte:* special elements
// - **helpers.rs** - Shared utilities (node classification, pattern/expression doc builders, source position tracking)
// Shared with the root-fragment printer (`crate::printer::mod`) for run detection.
pub use ;
pub use is_control_flow_block;
// Shared with the `<svelte:options>` printer (`crate::printer::mod`) — the one tag head
// printed outside the element pipeline, but through the same attribute-list emitter.
pub use AttrGaps;