From 85cc034611392f53f5eca1d3095faf8b9e6e1757 Mon Sep 17 00:00:00 2001 From: Pierre MARTIN Date: Mon, 2 Nov 2026 20:42:08 +0100 Subject: [PATCH] =?UTF-8?q?Glossaire=20reli=C3=A9=20au=20code=20dans=20les?= =?UTF-8?q?=20deux=20sens?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fiches Demi-coup (HalfMove) et Plateau (Board) ajoutées ; champ code des fiches Coup, Jet, Pli, Moteur, Identifiant de position, Videau, Événement de partie et Partie. tests/test_glossary.sh vérifie que chaque référence « Glossaire : » du code mène à une fiche qui nomme le type, et que chaque champ code désigne un type qui renvoie à sa fiche. Co-Authored-By: Claude Opus 5.5 --- docs/glossaire/README.md | 7 +++- docs/glossaire/coup.md | 1 + docs/glossaire/demi-coup.md | 15 +++++++++ docs/glossaire/evenement-de-partie.md | 1 + docs/glossaire/identifiant-de-position.md | 1 + docs/glossaire/jet.md | 1 + docs/glossaire/moteur.md | 1 + docs/glossaire/partie.md | 1 + docs/glossaire/plateau.md | 14 ++++++++ docs/glossaire/pli.md | 1 + docs/glossaire/videau.md | 1 + tests/test_glossary.sh | 40 +++++++++++++++++++++++ 12 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 docs/glossaire/demi-coup.md create mode 100644 docs/glossaire/plateau.md diff --git a/docs/glossaire/README.md b/docs/glossaire/README.md index 6bc6998..d915c86 100644 --- a/docs/glossaire/README.md +++ b/docs/glossaire/README.md @@ -26,7 +26,10 @@ Voir aussi : [Doubler](doubler.md) `code` est facultatif : il désigne le type du domaine qui implémente le terme, dès qu'il existe. Dans le code, ce type porte en commentaire le chemin de sa -fiche (`Glossaire : docs/glossaire/videau.md`). +fiche (`Glossaire : docs/glossaire/videau.md`), juste avant sa déclaration +exportée. `make test` vérifie le lien dans les deux sens : chaque fiche avec +`code` est reliée à ce type, chaque référence du code mène à une fiche dont le +`code` est le type qui la porte. ## Termes @@ -38,6 +41,7 @@ fiche (`Glossaire : docs/glossaire/videau.md`). | [Branche](branche.md) | Branch | | [Compte de points](compte-de-points.md) | Pip count | | [Coup](coup.md) | Move | +| [Demi-coup](demi-coup.md) | Half-move | | [Course](course.md) | Race | | [Doubler](doubler.md) | Double | | [Équité](equite.md) | Equity | @@ -51,6 +55,7 @@ fiche (`Glossaire : docs/glossaire/videau.md`). | [Partie](partie.md) | Game | | [Passer](passer.md) | Drop | | [Pion](pion.md) | Checker | +| [Plateau](plateau.md) | Board | | [Pli](pli.md) | Ply | | [Point](point.md) | Point | | [Prendre](prendre.md) | Take | diff --git a/docs/glossaire/coup.md b/docs/glossaire/coup.md index c1272f3..56e1889 100644 --- a/docs/glossaire/coup.md +++ b/docs/glossaire/coup.md @@ -1,6 +1,7 @@ --- term: Coup english: Move +code: Move --- # Coup diff --git a/docs/glossaire/demi-coup.md b/docs/glossaire/demi-coup.md new file mode 100644 index 0000000..2de4a18 --- /dev/null +++ b/docs/glossaire/demi-coup.md @@ -0,0 +1,15 @@ +--- +term: Demi-coup +english: Half-move +code: HalfMove +--- +# Demi-coup + +**En bref** : le déplacement d'un pion avec un seul dé, par exemple 8/5 avec un 3 ; un coup en compte deux, ou quatre avec un double. + +On saisit son coup demi-coup par demi-coup : l'application n'accepte que ceux +qui mènent à un coup permis. Pour un pion qui sort, la case d'arrivée se note +« off » (6/off) ; pour un pion qui rentre depuis la barre, la case de départ se +note « bar » (bar/22). + +Voir aussi : [Coup](coup.md), [Jet](jet.md), [Barre](barre.md), [Sortie](sortie.md) diff --git a/docs/glossaire/evenement-de-partie.md b/docs/glossaire/evenement-de-partie.md index 7a5c77e..12bc4a9 100644 --- a/docs/glossaire/evenement-de-partie.md +++ b/docs/glossaire/evenement-de-partie.md @@ -1,6 +1,7 @@ --- term: Événement de partie english: Game event +code: GameEvent --- # Événement de partie diff --git a/docs/glossaire/identifiant-de-position.md b/docs/glossaire/identifiant-de-position.md index 7ea8165..e002614 100644 --- a/docs/glossaire/identifiant-de-position.md +++ b/docs/glossaire/identifiant-de-position.md @@ -1,6 +1,7 @@ --- term: Identifiant de position english: Position ID +code: PositionId --- # Identifiant de position diff --git a/docs/glossaire/jet.md b/docs/glossaire/jet.md index 1ec2bcf..238c088 100644 --- a/docs/glossaire/jet.md +++ b/docs/glossaire/jet.md @@ -1,6 +1,7 @@ --- term: Jet english: Roll +code: Roll --- # Jet diff --git a/docs/glossaire/moteur.md b/docs/glossaire/moteur.md index 05c292b..79c70ae 100644 --- a/docs/glossaire/moteur.md +++ b/docs/glossaire/moteur.md @@ -1,6 +1,7 @@ --- term: Moteur english: Engine +code: Engine --- # Moteur diff --git a/docs/glossaire/partie.md b/docs/glossaire/partie.md index a8bb813..5d54720 100644 --- a/docs/glossaire/partie.md +++ b/docs/glossaire/partie.md @@ -1,6 +1,7 @@ --- term: Partie english: Game +code: Game --- # Partie diff --git a/docs/glossaire/plateau.md b/docs/glossaire/plateau.md new file mode 100644 index 0000000..14c7704 --- /dev/null +++ b/docs/glossaire/plateau.md @@ -0,0 +1,14 @@ +--- +term: Plateau +english: Board +code: Board +--- +# Plateau + +**En bref** : la surface de jeu, avec ses 24 cases (les points), la barre au milieu, et les pions de chaque joueur. + +Chaque joueur numérote les cases de son point de vue : sa case 1 est la plus +proche de sa sortie, sa case 24 la plus éloignée, qui est la case 1 de +l'adversaire. + +Voir aussi : [Point](point.md), [Pion](pion.md), [Barre](barre.md), [Identifiant de position](identifiant-de-position.md) diff --git a/docs/glossaire/pli.md b/docs/glossaire/pli.md index f6e0125..44e2202 100644 --- a/docs/glossaire/pli.md +++ b/docs/glossaire/pli.md @@ -1,6 +1,7 @@ --- term: Pli english: Ply +code: Ply --- # Pli diff --git a/docs/glossaire/videau.md b/docs/glossaire/videau.md index 1d24b72..d0b077e 100644 --- a/docs/glossaire/videau.md +++ b/docs/glossaire/videau.md @@ -1,6 +1,7 @@ --- term: Videau english: Cube +code: Cube --- # Videau diff --git a/tests/test_glossary.sh b/tests/test_glossary.sh index 43168c7..dc9c236 100755 --- a/tests/test_glossary.sh +++ b/tests/test_glossary.sh @@ -33,4 +33,44 @@ done duplicates="$(find . -name '*.md' ! -name README.md -exec sed -n 's/^english: //p' {} + | sort | uniq -d)" [ -z "$duplicates" ] || report "traductions anglaises en double : $duplicates" +# Lien glossaire <-> code (ADR 0008), dans les deux sens. Dans le code, un +# commentaire « Glossaire : docs/glossaire/.md » désigne le premier +# type exporté qui le suit ; la fiche doit exister et nommer ce type dans son +# champ code. Réciproquement, chaque champ code d'une fiche doit désigner un +# type ainsi relié à elle. +pairs="$(find ../../app/src -name '*.ts' -exec awk ' + function flush() { if (ref != "") print ref, "?"; ref = "" } + FNR == 1 { flush() } + match($0, /Glossaire : docs\/glossaire\/[a-z0-9-]+\.md/) { + flush() + ref = substr($0, RSTART + 27, RLENGTH - 27) + next + } + ref != "" && match($0, /^export (interface|type|class|enum) [A-Za-z0-9_]+/) { + n = split(substr($0, RSTART, RLENGTH), words, " ") + print ref, words[n] + ref = "" + } + END { flush() } +' {} +)" + +while read -r fiche type; do + [ -n "$fiche" ] || continue + if [ "$type" = "?" ]; then + report "code : référence à $fiche sans type exporté juste après" + elif [ ! -f "$fiche" ]; then + report "code : le type $type renvoie à une fiche inexistante ($fiche)" + elif [ "$(sed -n 's/^code: //p' "$fiche")" != "$type" ]; then + report "$fiche : le type $type y renvoie, mais la fiche n'a pas « code: $type »" + fi +done <<<"$pairs" + +for f in *.md; do + [ "$f" = README.md ] && continue + code="$(sed -n 's/^code: //p' "$f")" + [ -n "$code" ] || continue + grep -qx "$f $code" <<<"$pairs" \ + || report "$f : « code: $code » ne désigne aucun type du code qui renvoie à cette fiche" +done + [ "$errors" -eq 0 ]