Étape 0d.1 : domaine « partie » en TypeScript, scénario exécuté ; ADR 0009 accepté #11

Merged
pierre merged 11 commits from plateau into main 2026-11-02 20:14:20 +00:00
12 changed files with 83 additions and 1 deletions
Showing only changes of commit 85cc034611 - Show all commits
+6 -1
View File
@@ -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 |
+1
View File
@@ -1,6 +1,7 @@
---
term: Coup
english: Move
code: Move
---
# Coup
+15
View File
@@ -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)
+1
View File
@@ -1,6 +1,7 @@
---
term: Événement de partie
english: Game event
code: GameEvent
---
# Événement de partie
@@ -1,6 +1,7 @@
---
term: Identifiant de position
english: Position ID
code: PositionId
---
# Identifiant de position
+1
View File
@@ -1,6 +1,7 @@
---
term: Jet
english: Roll
code: Roll
---
# Jet
+1
View File
@@ -1,6 +1,7 @@
---
term: Moteur
english: Engine
code: Engine
---
# Moteur
+1
View File
@@ -1,6 +1,7 @@
---
term: Partie
english: Game
code: Game
---
# Partie
+14
View File
@@ -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)
+1
View File
@@ -1,6 +1,7 @@
---
term: Pli
english: Ply
code: Ply
---
# Pli
+1
View File
@@ -1,6 +1,7 @@
---
term: Videau
english: Cube
code: Cube
---
# Videau
+40
View File
@@ -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/<fiche>.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 ]