acdc-parser 0.1.4

`AsciiDoc` parser using PEG grammars
Documentation
= `acdc-parser`

The implementation here follows from:

* https://gitlab.eclipse.org/eclipse/asciidoc-lang/asciidoc-lang/-/blob/main/spec/modules/ROOT/pages/lexicon.adoc[Language Lexicon]: nomenclature of elements
* https://gitlab.eclipse.org/eclipse/asciidoc-lang/asciidoc-lang/-/blob/main/spec/outline.adoc[Language Outline]: behaviour/layout
* https://docs.asciidoctor.org/asciidoc/latest[Asciidoctor Language Documentation]: behaviour/layout

== Features supported

* [x] Document Headers
* [x] Section
* [x] Delimited Block
** [x] Comment
** [x] Example
** [x] Listing
** [x] Literal
** [x] Open
** [x] Sidebar
** [x] Table
** [x] Pass
** [x] Quote
** [x] Verse
* [x] Paragraph
** [x] Bold (constrained & unconstrained)
** [x] Italic (constrained & unconstrained)
** [x] Monospace (constrained & unconstrained)
** [x] Literal Monospace
** [x] Highlight (constrained & unconstrained)
** [x] Subscript / Superscript
** [x] Curved quotes and apostrophes
** [x] Passthrough (inline and macro)
* [x] Image (block and inline)
* [x] Video
* [x] Audio
* [x] Lists (see <<lists,detailed notes>>)
** [x] Ordered
** [x] Unordered
** [x] Description Lists
** [x] Checklist items
* [x] Thematic Break
* [x] Page Break
* [x] Tables (basic support)
* [x] Admonition
* [x] Anchors
* [x] Attributes
* [x] Titles
* [x] Footnotes (including inline content)
* [x] Cross References
** [x] xref macro
** [x] Shorthand notation (\<<id>>)
* [x] Links and URLs
** [x] Link macro
** [x] URL detection and autolinks
* [x] Inline Macros
** [x] Button
** [x] Keyboard
** [x] Menu
** [x] Icon
** [x] Pass
* [x] Includes
** **Advanced**
** [x] Offsets
** [ ] Tagged regions
* [x] Conditionals
** [x] ifdef
** [x] ifndef
** [x] ifeval
* [x] Line breaks (+)
* [x] Discrete headers

[[lists]]
== Lists - detailed support notes

Lists are partially implemented. Here's what works and what doesn't.

=== What works

**Ordered and unordered lists**

Basic list items with inline content work fine, including:

- Nested lists (using different marker levels like `*`, `**`, `***`)
- Checklist items (`[x]`, `[ ]`)
- Multiline text that wraps within a list item
- List separators (both `//` line comments and `[]` block attributes)
- Multiple consecutive `+` continuations in the same item
- Open block (`--`) wrappers for grouping multiple blocks in a continuation

**Description lists**

I've implemented basic description list support with several features:

- All standard delimiters (`::`, `:::`, `::::`, `;;`)
- Principal text (inline text immediately after the delimiter)
- Explicit continuation (`+`) for attaching block content
- Auto-attaching ordered/unordered lists to description list items (even with blank lines before the list)

=== What doesn't work

**Ancestor list continuation**

- No ancestor list continuation (attaching blocks to parent list items with blank lines before `+`)

=== Why these limitations exist

The model supports block attachments (`ListItem` has both `principal: Vec<InlineNode>` and `blocks: Vec<Block>`), and most list features work correctly. The remaining issue is:

- Ancestor list continuation (blank line before `+`) isn't supported - the parser attaches continuations to the last nested item rather than the parent