S7 class definitions backing tabular's display-side IR. Users do
not construct these directly except for col_spec(); every
other class is built and chained by the verb pipeline
(tabular() -> cols() -> headers() -> sort_rows()
-> style() -> paginate() -> preset() -> as_grid()
/ emit()).
Details
The class set is intentionally small (~11 concepts) so the IR fits in one mental model:
| class | role | constructor |
tabular_spec | root container; carries data + every other spec slot | tabular() |
col_spec | per-column DSL (usage, label, format, align, ...) | col_spec() |
header_node | one node in the multi-level header tree | internal — built by headers() |
sort_spec | sort keys + per-key direction | internal — built by sort_rows() |
style_node | one resolved style attribute set (per-cell) | internal — built by style() |
style_layer | one tabular_location + style_node | internal — built by style() |
style_spec | the cascade root (defaults + cols + headers + layers) | internal — built by style() |
pagination_spec | page-split policy (keep_together, panels, floors) | internal — built by paginate() |
preset_spec | render geometry (paper, orientation, font, margins) | internal — built by preset() |
inline_ast | parsed inline-formatting AST (runs of bold / sup / …) | internal — built by parse_inline() |
tabular_grid | resolved per-page cells + ASTs + styles + headers | as_grid() |
Every spec slot is typed: a verb that would mutate a slot to an invalid value fails at construction time (the S7 validator runs as a last-line defense behind the cli-friendly verb-level validators).
Class predicates. Each class has a matching is_<name>()
predicate; see tabular_predicates for the full list.
See also
Class predicates: tabular_predicates.