PrawnEx.Layout.Markup (prawn_ex v0.3.0)

Copy Markdown View Source

Minimal line-oriented markup → PrawnEx.Layout flow blocks (Phase D).

Syntax (intentionally small):

  • # title — level-1 heading (single line).
  • ## title — level-2 heading (smaller font).
  • - item — bullet line; consecutive - lines form one paragraph with ASCII * line prefixes (PDF-safe).
  • Blank line — ends the current paragraph or bullet group.
  • Other lines — accumulate into a plain paragraph until blank or heading.

Lines are split on \n only; each line is String.trim/1’d.

Example

markup = """
# Report

First line.
Second line.

## Details
- Point A
- Point B
"""

layout |> PrawnEx.Layout.Markup.apply(markup) |> PrawnEx.Layout.to_doc()

Summary

Functions

Parses markup and runs Layout.vstack/3 (optional vstack_opts: :gap).

Parses source into flow tuples for PrawnEx.Layout.vstack/3

Functions

apply(layout, source, vstack_opts \\ [])

Parses markup and runs Layout.vstack/3 (optional vstack_opts: :gap).

parse(source)

@spec parse(String.t()) :: [PrawnEx.Layout.flow_block()]

Parses source into flow tuples for PrawnEx.Layout.vstack/3:

  • {:heading, text, opts}:level 1 or 2
  • {:paragraph, text, opts}