12c: a test pins the closer to its list item or blockquote edge, and 4c names the list-item walk's re-scan class
CI / publish (push) Waiting to run
CI / gate (push) Successful in 28s

This commit was merged in pull request #86.
This commit is contained in:
2026-09-16 20:23:00 +02:00
parent 582594a6d6
commit 58392ace7c
2 changed files with 6 additions and 3 deletions
@@ -305,6 +305,7 @@ test('names the container no closer closes inside the block holding it', () => {
assert.deepEqual(path(markdownToAdf('Part.\n!adf:expand\n')), ['content', 1])
assert.equal(content(markdownToAdf('!adf:bulletList\n')), unclosed('bulletList'))
assert.equal(content(markdownToAdf('- !adf:panel info\n Part.\n!adf:/panel\n')), unclosed('panel'))
assert.equal(content(markdownToAdf('> !adf:panel info\n> - a\n> !adf:/panel\n')), unclosed('panel'))
assert.equal(content(markdownToAdf('!adf:panel info\n!adf:expand\nPart.\n!adf:/panel\n')), unclosed('expand'))
assert.deepEqual(path(markdownToAdf('!adf:panel info\n!adf:expand\nPart.\n!adf:/panel\n')), ['content', 0, 'content', 0])
})
+5 -3
View File
@@ -74,9 +74,11 @@ proves 12, 13 spells 11's gaps in 12's grammar, and 12 rewrites code 4b and 4c c
them: `readNestedDirective` restarts its depth counter per level, so each parse level
re-scans the region below it and nested inline directives cost O(depth × content) — 3f's
cost, which 3i's slot parse doubles rather than changes in class, bounded by the 500-level
guard. A fifth predates 12c: a blank line continues every open list item without consuming
input, so the block walk visits the whole item stack per line — `d` nested items and `4d`
blank lines take 11s at 59 KB (the stability-reviewer, 2026-09-16). §11's scanning rule is
guard. A fifth predates 12c: the list-item walk re-scans the rest of a line once per item
level — `isThematicBreak` in `containerStart` on an opener line, `isBlankLine` and
`leadingColumns` in `continuesContainer` on a continuation line, and a blank line
continues every open item without consuming input; 30000 nested items take 4.4s at 59 KB
(the stability-reviewer, 2026-09-16). §11's scanning rule is
the whole argument; the pipeline persona feeds documents nobody typed.
`readDirectiveContent`'s scan splits into named steps with that fix rather than keeping its
complexity (the maintainer, 2026-09-16).