Glossaire relié au code dans les deux sens
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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
1f9981dc63
commit
85cc034611
@@ -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 ]
|
||||
|
||||
Reference in New Issue
Block a user