Validatie¶
Voor wie / wanneer
Voor: notatie-auteur die foutmeldingen wil begrijpen en oplossen.
Wanneer: tijdens schrijven, vóór export, of in CI.
Niet: SVG maken — dat is SVG exporteren /
vsa svg.
Antwoord in het kort: vsa validate controleert of VSA-notatie
bruikbaar is. Lees de foutregel (bestand → blok → regel → code), herstel, opnieuw.
Wanneer valideren?¶
| Situatie | Valideren? |
|---|---|
Tijdens het schrijven van .vsa |
Ja |
| Vóór SVG / MusicXML / Hugo-build | Ja |
| In CI op content-source | Ja |
| Alleen snel een plaatje bekijken | Optioneel — zie validate ≠ svg hieronder |
Validate ≠ svg¶
| Commando | Controleert semantiek? | Schrijft SVG? |
|---|---|---|
vsa validate |
Ja | Nee |
vsa svg |
Nee (alleen parse) | Ja |
Voorbeeld: examples\minimal\050_svg_demo.vsa kan op validate falen
(semantische mismatch) en toch met vsa svg renderen. Wil je
geldige VSA-notatie, draai eerst validate.
Snel starten¶
cd /d C:\Git\orthodox-ronl\VSA-tooling
vsa validate examples\docs-walkthroughs\svg-phrase-kort.vsa
Bij succes: OK. Map valideren:
vsa validate examples\consumer-minimal\content-source
Wat wordt gecontroleerd?¶
| Controle | Voorbeeld van fout |
|---|---|
| scope is goed afgesloten | {tekst |
| scope is niet leeg | {} |
| geen whitespace binnen scope | {te kst} |
| geen losse sluitaccolade | tekst} |
| pitch-marker is goed afgesloten | [//: |
| pitch-marker heeft dubbele punt | [//] |
| toonhoogte-overgang verbindt opeenvolgende hoogtes zonder mismatch | zie liturgie-keten |
| hoogte-modifier- en lengte-modifier-posities passen bij elkaar | {/&\tekst_} |
Succesoutput¶
Bij geldige notatie schrijft vsa validate alleen:
OK
Exitcode: 0. Details: vsa validate.
Foutoutput lezen¶
Concrete fail-fixture
(examples\docs-walkthroughs\validate-unclosed-scope.vsa):
{tekst
cd /d C:\Git\orthodox-ronl\VSA-tooling
vsa validate examples\docs-walkthroughs\validate-unclosed-scope.vsa
validate-unclosed-scope.vsa:1:1
ERROR: VSA-SYNTAX-UNCLOSED-SCOPE: Scope zonder afsluitende accolade.
{tekst
^
| Deel | Betekenis |
|---|---|
validate-unclosed-scope.vsa |
bestand waarin de fout zit |
1:1 |
regel en kolom |
VSA-SYNTAX-UNCLOSED-SCOPE |
foutcode (diagnostic) |
tekst erna + ^ |
uitleg en positie-indicator |
Fix: sluit de scope af, bijvoorbeeld {tekst}.
In Markdown met VSA-blokken ziet de locatie er zo uit:
examples\demo.md:blok-1:1:1: VSA-SYNTAX-EMPTY-SCOPE: Scope zonder zangelement.
| Deel | Betekenis |
|---|---|
examples\demo.md |
Markdown-bestand |
blok-1 |
eerste VSA-blok in dat bestand |
1:1 |
regel en kolom binnen dat blok |
VSA-SYNTAX-EMPTY-SCOPE |
foutcode (diagnostic) |
| tekst erna | uitleg |
Diagnose bij problemen¶
| Symptoom / melding | Oorzaak | Fix |
|---|---|---|
VSA-SYNTAX-EMPTY-SCOPE |
{} of lege scope |
Zangelement tussen { en } zetten |
VSA-SYNTAX-UNCLOSED-SCOPE (of vergelijkbaar) |
Ontbrekende } |
Scope afsluiten; regel/kolom in de melding volgen |
| Semantische modifier-mismatch | Aantal hoogte- ≠ lengte-posities | Modifiers tellen; zie semantics |
VSA-SEMANTIC-HEIGHT-MARKER-MISMATCH |
Lokale markering wijkt af van berekende cursor | Markering of scopes aanpassen; of bewuste sprong via toonhoogte-overgang |
VSA-SEMANTIC-PITCH-TRANSITION-MISMATCH |
Linker-EHM van [oud:nieuw] klopt niet met cursor |
Linkerhoogte laten matchen met de huidige markering/cursor |
OK lokaal, CI faalt |
Andere map / andere vsa.toml |
Zelfde pad als CI; severity-overrides controleren |
| SVG werkt, validate faalt | svg doet geen volle semantiek |
Verwacht gedrag — zie hierboven; herstel of accepteer bewust |
Liturgie-keten: bewuste hoogtesprong¶
Eindigt een antifoon op [//:] en begint een tropaar “in het echt” op
[/:], dan faalt validate zonder overgang. Zet tussen beide stukken een
stille toonhoogte-overgang — die verschijnt niet op het blad:
[//:] … einde antifoon … [//:]
[//:/]
[/:] Gij … begin tropaar … [/:]
Gebruik geen kunstmatige dalende EHM op het eerste woord van de tropaar
(bijvoorbeeld {\Gij}): dat verandert de melodie.
Concrete fail + Fix: man-page vsa validate.
Severity-overrides¶
In vsa.toml kun je sommige semantische meldingen tijdelijk als
severity warning zetten. Syntaxfouten blijven altijd hard.
[validation.severity]
VSA-SEMANTIC-MODIFIER-COUNT-MISMATCH = "warning"
vsa validate bestand.vsa --config vsa.toml
Zie ook¶
vsa validate— synopsis, flags, fail-voorbeelden- Diagnostics-referentie
- Specificatie — validatie
- Voorbeelden — fouten