Commit graph

15 commits

Author SHA1 Message Date
randogoth
67a727ba24 nex renderer 2026-09-23 09:14:41 +03:00
randogoth
e708dce8f7 Move the WML renderer out to wapdown
Every other renderer here -- text, micron, ama, gemini, nex -- is a
straight transform of a document into a flat, minimal text format. The
WML renderer was neither: it emitted an XML tree, and it restructured the
document rather than transforming it, splitting one file into many
<card>s and inventing navigation between them. That is why it was the
only renderer needing split_level / max_card_bytes / menu levers, the
only one buffering the whole event stream instead of streaming it, and
the only one that required a block kind in the shared parser --
CARD_BREAK, for its {.card} divider -- that every other renderer ignored
as a no-op.

It now lives in its own repository, where restructuring a document into a
navigable deck is the point rather than an intrusion:

    https://codeberg.org/randogoth/wapdown

Removed here: renderers/wml.py, its CLI registration, the wml examples,
the README section, and the CARD_BREAK event and {.card} directive that
existed solely to serve it. A leftover {.card} line in an old document
will now render as literal text rather than being silently dropped.

Verified: all five remaining renderers produce byte-identical output to
before this change.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 09:03:20 +03:00
randogoth
d5046543b3 Add WML renderer for WAP decks
Adds a `wml` renderer plugin converting Markdown into WML decks for
old WAP browsers, following the existing parser -> BlockEvent stream
-> renderer plugin architecture (see gemini/micron/ama renderers).

WML content is idiomatically short and button/link-navigated rather
than one long page, so unlike the other renderers, `wml` can split a
document into multiple <card>s -- but only opt-in:

- Manual `{.card}` / `{.card Title}` divider directives (new,
  format-agnostic BlockKind.CARD_BREAK; silently ignored by every
  other renderer via their existing unhandled-kind no-op path).
- Heading-level splitting via `--renderer-option split_level=N`,
  ignored when manual dividers are present.
- Plain documents with neither stay a single card (the safe default).

When a document resolves to 2+ cards, a hub-and-spoke menu card is
built by default (button/link choices -> section, Back to menu), or
`menu=false` switches to a linear Next/Back chain. A byte-overflow
safety net (`max_card_bytes`, default 1400) paginates any single
section that's still too large.

Also adds GFM pipe-table support (BlockKind.TABLE) via the same
sentinel-injection preprocessing trick already used for ASCII art
blocks, so the parser's line-by-line loop needed no lookahead rework.
Rendered as `<table>` in wml, silently ignored elsewhere.

No new dependencies. No devbox/jj/test-suite additions -- decided
against for this repo (see README for the full option reference).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-23 08:22:14 +03:00
randogoth
a0c2bebc17 ama code fix 2025-10-20 20:35:36 +03:00
randogoth
107f2155de examples 2025-10-20 20:07:38 +03:00
randogoth
315142005d gemini protocol gemtext support 2025-10-20 18:40:59 +03:00
randogoth
ae26bb205b alignment fix 2025-10-20 17:56:30 +03:00
randogoth
8283dd45ea examples 2025-10-20 17:48:57 +03:00
randogoth
b85530483a ascii art blocks 2025-10-20 14:14:07 +03:00
randogoth
ad70e8dcd8 list formatting 2025-10-20 12:16:20 +03:00
randogoth
c57cfc4747 block decorations and wrap 2025-10-20 12:09:25 +03:00
randogoth
de6e99c24a modularized 2025-10-20 11:40:17 +03:00
randogoth
8f25427fd7 figlet fix, code block margin 2025-10-20 01:11:29 +03:00
randogoth
70196134d6 figlet alignment 2025-10-20 00:00:16 +03:00
randogoth
b1f1d7b5f6 improvements 2025-10-19 23:22:15 +03:00