Formaat: een spreeknotitie die met "Woord:" begint laat de dia stil haar type verliezen #1815
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1815
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat er misgaat
requiresWholeMarpBlockPreservationinlib/services/marp_source_preservation.dartziet élk enkelregelig HTML-commentaar waarvan de inhoud matcht op
^[A-Za-z][A-Za-z0-9_-]*\s*:aan voor een onbekende Marp-directive, tenzij hetbegint met
advance:,tlp:,ocideck_of_. Is er zo'n commentaar, dan valthet hele diablok terug op
SlideType.freeMarkdown.Een gewone spreeknotitie is in het Nederlands (en Engels) vaak van precies die
vorm. Deze drie zijn genoeg:
Gemeten op
main(bcde8be6a), 2026-08-27. Een handgeschreven deck van 45dia's met onder meer
<!-- _class: question -->,<!-- _class: matrix -->en<!-- _class: chart -->. Drie dia's parsten alsfreeMarkdownin plaats van alsquestion/matrix/chart — precies de drie waarvan de notitie met
Woord:begon.Alleen die drie notities herschrijven (geen andere wijziging) herstelde alle
drie de types.
Voor de grafiekdia betekent dit dat de ```chart-fence als codeblok rendert in
plaats van als grafiek. Voor de vraagdia dat de quiz niet speelbaar is.
Waarom de heuristiek te breed is
Marpit honoreert alleen directives waarvan het de sleutel kent; een onbekende
sleutel wordt genegeerd. Een blok bewaren om
Antwoord:is dus niet alleenschadelijk, het is ook zinloos: Marp doet er zelf niets mee. De bewaarroute is
bedoeld voor sleutels die Marp wél honoreert maar OciDeck niet modelleert
(
paginate,backgroundPosition,size,transition,class, …). De toetshoort dan ook tegen die woordenlijst te gaan, niet tegen "elk woord gevolgd door
een dubbele punt".
Het tweede gat: de structuurcontrole zwijgt
MarkdownValidator.validate()levert op ditzelfde deck nul bevindingen,terwijl drie dia's stil hun type verliezen.
_reDirectiveKeydaar kijkt bewustalleen naar
_- enocideck_-voorvoegsels, dus de bare-word:-val valt buitenbeeld. Dit is precies het soort stille degradatie waarvoor §10 bestaat.
Wat het met het bestandsformaat doet
FILE_FORMAT.md§8 belooft: "Presenter notes — any other comment that does notstart with
_". Die belofte klopt vandaag niet. Wie een deck met de handschrijft — of laat genereren — kan een dia stil kwijtraken op een notitie die
niets bijzonders is.
Toetsen
Een regressietest die een
question- en eenchart-dia met de notitie<!-- Antwoord: onwaar. -->parseert en eist dat het diatype behouden blijft, eneen tegenhanger die aantoont dat een echte, niet-gemodelleerde Marp-directive
(
<!-- backgroundPosition: top -->) het blok wél nog bewaart. Beide falenvandaag de eerste kant op.
Verhouding tot #1810
Aangrenzend, maar een andere fout. #1810 gaat over onbekende
ocideck_*-directieven die een opslag niet overleven; dit gaat over prozanotities die
bij het lezen voor een Marp-directive worden aangezien. Ander pad, andere
reparatie, ze bijten elkaar niet.
Opgepakt. Tak: fix/marp-notitie-directive (worktree). Verwachte reikwijdte: lib/services/marp_source_preservation.dart, lib/services/markdown_validator.dart (+ vocabulary), test/, docs/FILE_FORMAT.md §8/§9, CHANGELOG. Raakt #1810 niet: die zit in het schrijfpad voor onbekende ocideck_*-directieven, deze in de leesheuristiek voor Marp-directives.
Opgelost en op main geverifieerd: merge-commit
2bc36eea6(PR #1816).De toets gaat nu positief tegen
kMarpitDirectiveNames— de sleutellijst van Marpit zelf, hoofdlettergevoelig — in plaats van tegen 'elk woord gevolgd door een dubbele punt'. De uitzonderingslijst (advance:,tlp:,ocideck_,_) verviel daarmee: geen van vieren is een Marp-richtlijn, dus geen van vieren komt de toets nog binnen.Het tweede gat is ook dicht: valt een dia wél terecht terug (
paginate:,footer:,backgroundPosition:), dan meldtMarkdownValidatordat nu met naam en gevolg. FILE_FORMAT §8 belooft weer wat de lezer doet, met §9, de §10-controletabel en de Nederlandse versie mee.Regressietest:
test/marp_directive_note_test.dart, eerst rood (6 van 15 faalden tegen de onherstelde code). Praktijktoets: het deck van 46 dia's dat de fout blootlegde, mét de drie oorspronkelijke notities, parseert nu met nul terugvallen naar freeMarkdown.Wat er NIET in zit: de lijst hangt aan geen enkele poort. Voegt Marp een richtlijn toe, dan gaat die bij het opslaan verloren tot de naam erbij staat. Die afweging staat opgeschreven bij de lijst zelf, met de omslagvoorwaarde — een poort op
make check-marp(#1804), of de doorgeeflus van #1810 die de vraag opheft. Zie #1817.