Latest Results
fix: Track Asciidoctor's attribute_list_test.rb via SDD, and fix the parser differences it surfaces (#693)
Vendor Asciidoctor's `attribute_list_test.rb` under `ref/asciidoctor/test/`
and teach the `sdd` coverage tool to measure `.rb` files there as spec sources
(alongside the existing AsciiDoc-language `.adoc` sources). Add an `asciidoctor`
Codecov component so the new coverage is reported separately.
This is the first step of porting Asciidoctor's Ruby test suite one file at a
time; see `ref/asciidoctor/README.md`.
Porting Asciidoctor's `attribute_list_test.rb` surfaced several behavior
differences in attribute-list parsing; fix them to match Asciidoctor:
* An empty quoted positional (`""` / `''`) now yields an empty-valued
positional attribute (`{1 => ""}`) instead of no attribute plus a spurious
"missing comma" warning.
* `opts=` / `options=` tokens are trimmed and empties dropped, so
`options='opt1,,opt2 , opt3'` yields `opt1`, `opt2`, `opt3`.
* Positional attributes are numbered by a running 1-based counter over every
comma-delimited entry -- named entries and blank (`nil`) slots included -- so
a later positional keeps its position even when earlier entries are named or
left blank (e.g. `image::x[Alt,,300]` keeps `300` at position 3). A blank slot
yields `None` (Asciidoctor's `nil`); `nth_attribute` looks up by that stored
position.
* Quote-unescaping and single-quoted substitution apply only to genuinely
quote-delimited values, not to a lone leading quote (matching Asciidoctor's
`single_quoted unless value.start_with? APOS` rule).
Existing fixtures that encoded the old blank-slot behavior are updated to the
new Asciidoctor-matching output.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Latest Branches
0%
release-plz-2026-07-15T14-38-11Z 0%
claude/beautiful-maxwell-ac6c95 0%
claude/asciidoctor-attrlist-sdd-687360 © 2026 CodSpeed Technology