gleamunison/formatter
Opinionated formatter for gleamunison surface syntax (roadmap 9.2).
One rule, no configuration:
- a form is flat when it fits in 72 columns at its indent;
- otherwise it breaks after its head, children one per line at +2;
- when the head is an atom, the first child joins the opening line
if it fits flat (the
(define name …)convention).
Formatting is a pure function of the parse tree, so it is idempotent
by construction. Known normalizations: ; comments are dropped (the
lexer discards them before layout), and ’x prints as (quote x).
Values
pub fn drops_comments(src: String) -> Bool
True when the source carries ; comments the formatter will drop —
callers surface this as a warning, never silently.
pub fn format_source(
src: String,
) -> Result(String, lexer.ParseError)
Format a whole source file: every top-level form on its own line(s), forms separated by single newlines, trailing newline at the end.