Revision history for Markdown-Lex

0.2.0  2026-08-21T21:28:28+01:00
    - GFM pipe tables: a new Markdown::Lex::Table block with .alignments,
      .header, .rows and .columns, whose cells are Markdown::Lex::Cell and
      carry the same flat spans a paragraph does
    - A table needs its delimiter row before it is a table, so a header row
      arriving on its own stays a paragraph and the stream never flickers
    - Table cells: optional outer pipes, trimming, `\|` for a literal pipe,
      GFM's ragged-row rule (extra cells dropped, missing cells empty)
    - parse(:hard-breaks): opt-in, off by default, turns the soft line breaks
      inside a paragraph, bullet or quote into zero-text Markdown::Lex::Break
      spans instead of spaces, for drawing text a human typed
    - Under :hard-breaks each line is lexed alone, so emphasis does not cross a
      newline -- a documented divergence from GFM, pinned by the suite
    - Tables come off the non-goals list; hard breaks from two trailing spaces
      stay off it

0.1.0  2026-08-09T19:44:40+01:00
    - Initial release
    - parse() is total: never throws, and every prefix of a document lexes
    - Typed immutable blocks: Heading, Para, CodeFence, Bullet, Quote, Rule
    - Flat styled spans (bold / italic / code / link) instead of an inline tree
    - CommonMark-lite: ATX headings, fenced code with an info word, bullets with
      depth and verbatim markers, block quotes, thematic breaks, paragraphs with
      soft line breaks
    - Inline: backtick-run code spans, emphasis with CommonMark's delimiter-run
      and rule-of-three matching, intraword underscore protection, and links
    - Unclosed fences are reported with :!closed rather than swallowed
    - CRLF and lone CR normalised on entry, CRLF graphemes included
