Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Každý diagram Mermaid sestaveného webu dostane id (diagram-<name>), seznam svých uzlů, ovládací prvky prohlížeče a odkaz pro každý uzel, který je identitou objektu, k němuž web má stránku, vše odvozené při buildu; odkaz na

Diagram na webu je blok mermaid v dokumentu, nebo zdroj Mermaid, který šablona

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

případ staví fixture web, spouští průchod a scripts/ci/link-check nad ním a podstrčí nedeklarovaný uzel, uzel jiného diagramu, chybějící diagram a duplicitní deklarovaný název; chování prohlížeče je specifikace diagramu ve scripts/interaction-probe, kterou toto tvrzení nepokrývá.

Co to znamená

Diagram na webu je oplocení ```mermaid v dokumentu nebo zdroj Mermaid, který šablona zapisuje z generovaných dat. Po buildu každý z nich:

  • má id, diagram-<name>, takže #diagram-<name> na něj dopadne s JavaScriptem i bez něj;
  • vypíše uzly, které jeho zdroj deklaruje, v atributu data-nodes;
  • má vedle sebe panel nástrojů prohlížeče, zapsaný hidden;
  • má vedle sebe odkaz pro každý uzel, jehož id nebo popisek je identitou objektu, pro který tento build napsal stránku: úkol, milník, rozhodnutí, pravidlo, doktrína, příkaz, schopnost, dokument.

Nikdo nic z toho nepíše. Odkaz na jeden uzel, #diagram-<name>:<node>, se při sestavení řeší proti uzlům, které diagram deklaruje, a odkaz na neexistující uzel je nález.

Princip

scripts/site-build spouští scripts/lib/diagrams.mjs nad stránkami, které zapsala Zola, dřív než se přimíchají stránky jiných producentů. Jméno je data-diagram deklarované šablonou, jinak id nadpisu, pod nímž diagram sedí, jinak jeho pořadí na stránce; druhý diagram pod jedním nadpisem je <name>-2. Identity a jejich trasy se čtou z site/data/generated (plan.json, entities.json, commands.json, executable.json, doctrines.json, docs.json) a identita, jejíž stránku sestavení nezapsalo, se nenabízí. Popisek, který pojmenovává dva objekty nebo takový, pro nějž web nemá stránku, nevede ani na jeden.

Odkazy jsou běžný markup, takže o každém z nich rozhoduje scripts/ci/link-check spolu s ostatními odkazy webu. Stejná kontrola čte id a data-nodes, které průchod zapsal pro rozlišení adresy uzlu.

Jak to vidět

node --test scripts/lib/diagrams.test.mjs
bash test/run.sh 3006_diagrams_are_interactive_and_linkable

Případ sestaví vlastní web se třemi diagramy na jedné stránce, spustí průchod a scripts/ci/link-check nad ním a poté zasadí čtyři vady: odkaz na uzel, který diagram nedeklaruje, odkaz na uzel patřící jinému diagramu na téže stránce, odkaz do diagramu, který stránka nenese, a dva diagramy deklarované pod jedním jménem. Každá musí být zamítnuta nálezem, který ji pojmenuje. Případ také vyžaduje, aby úkol, jehož stránka nebyla sestavena, zůstal nenalinkován, aby zdroje diagramů zůstaly beze změny a aby druhý běh nezměnil žádný soubor.

Co nepokrývá

Tvrzení se týká toho, co build zapisuje a o čem rozhoduje link-check. To, že prohlížeč (site/diagrams.js) přibližuje, posouvá a otevírá adresu v browseru, ověřuje spec diagram v scripts/interaction-probe, který potřebuje browser a není součástí tohoto tvrzení.

Uzly se čtou pro vývojové diagramy a stavové diagramy. Jakýkoli jiný druh diagramu je pojmenován a adresovatelný jako celek a nemá odkazy na uzly ani adresy uzlů. Syntaxe Mermaid, kterou parser nečte, stojí chybějící odkaz, ne chybný, kromě případu, kdy popisek náhodou odpovídá identitě, kterou nemá na mysli.

Odkazy zvenčí webu na adresu diagramu nejsou chráněny: přejmenování nadpisu, pod kterým diagram leží, mění jeho adresu.

Proč existuje

Pravidlo project.a-diagram-is-drawn-not-typed přesunulo každý publikovaný vztah do Mermaidu, protože zpracovatelný diagram lze odkazovat a kontrolovat. Do ADR 0152 žádný nic neodkazovalo ani nekontrolovalo: uzel, který byl úkolem nebo příkazem, byl text na webu, který má pro každý stránku, a diagram neměl adresu, na kterou by se dalo odkázat.

Detail vykreslený z docs/claims/a-diagram-is-named-linked-and-addressable.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Každý diagram Mermaid sestaveného webu dostane id (diagram-<name>), seznam svých uzlů, ovládací prvky prohlížeče a odkaz pro každý uzel, který je identitou objektu, k němuž web má stránku, vše odvozené při buildu; odkaz na

    Žádná funkce ani odpovědnost v README ji nepojmenovává; tato stránka je místo, kde je uvedena.

  2. 2 · kanonické tvrzení

    a-diagram-is-named-linked-and-addressabledeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/DIAGRAMS.md

  3. 3 · implementace

    scripts/lib/diagrams.mjs

  4. 4 · test a scénáře

    Test: test/cases/3006_diagrams_are_interactive_and_linkable.sh

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 3006_diagrams_are_interactive_and_linkable

Prohledává názvy a popisy všech stránek, které tento web publikuje.