Python to Ruby

This commit is contained in:
julien committed 2026-09-30 14:27:05 +02:00
1 parent cf82698bef
commit 4c9e1f5f66
13 files changed
+360 -711

No files matched your search

+29 -50
View File
@@ -27,15 +27,15 @@ Les fichiers `_index.md` définissent les sections et restent maintenus manuelle
Les commandes publiques sont :
- `new-content.py` : création d’un brouillon ;
- `update-content.py` : mise à jour de l’horodatage `updated` ;
- `check-content.py` : validation des noms et de la structure des fiches.
- `new-content.rb` : création d’un brouillon ;
- `update-content.rb` : mise à jour de l’horodatage `updated` ;
- `check-content.rb` : validation des noms et de la structure des fiches.
`_schema.py` est leur module commun et ne se lance pas directement.
`schema.rb` est leur module commun et ne se lance pas directement.
## Cycle de rédaction
1. créer un brouillon avec `new-content.py` ;
1. créer un brouillon avec `new-content.rb` ;
2. compléter les données et le corps Markdown ;
3. contrôler son rendu avec les brouillons ;
4. passer `draft` à `false` lorsqu’il est prêt ;
@@ -51,7 +51,7 @@ zola --root src serve --drafts
Avant publication :
```sh
./scripts/check-content.py
./scripts/check-content.rb
zola --root src check --drafts
zola --root src build --drafts
zola --root src build
@@ -64,19 +64,19 @@ zola --root src build
Syntaxe générale :
```sh
./scripts/new-content.py SECTION IDENTIFIANT [--nature NATURE] [--title TITRE]
./scripts/new-content.rb SECTION IDENTIFIANT [--nature NATURE] [--title TITRE]
```
Exemples :
```sh
./scripts/new-content.py vocabulaire šarrum --nature nom
./scripts/new-content.py vocabulaire epēšum --nature verbe
./scripts/new-content.py vocabulaire --nature particule -- -ma
./scripts/new-content.py signes 113 --title BE
./scripts/new-content.py grammaire suffixes-pronominaux
./scripts/new-content.py textes lettre-au-marchand
./scripts/new-content.py articles nouvel-article
./scripts/new-content.rb vocabulaire šarrum --nature nom
./scripts/new-content.rb vocabulaire epēšum --nature verbe
./scripts/new-content.rb vocabulaire --nature particule -- -ma
./scripts/new-content.rb signes 113 --title BE
./scripts/new-content.rb grammaire suffixes-pronominaux
./scripts/new-content.rb textes lettre-au-marchand
./scripts/new-content.rb articles nouvel-article
```
Pour le vocabulaire, les natures reconnues sont :
@@ -86,7 +86,7 @@ nom, adjectif, verbe, pronom, préposition,
adverbe, conjonction, particule, numéral
```
Dans un terminal interactif, l’omission de `--nature` ouvre un menu. Dans un contexte non interactif, l’option est obligatoire.
Pour une fiche de vocabulaire, `--nature` est obligatoire. Ce choix explicite garde le générateur simple et prévisible.
Le générateur :
@@ -169,6 +169,8 @@ themes = ["morphologie-nominale"]
genres = ["inscription-commémorative"]
```
Conserver la syntaxe simple générée pour les tableaux de taxonomie : une seule ligne, avec les chaînes entre guillemets doubles. Le validateur minimal lit notamment `natures` sous cette forme (`natures = ["nom"]`).
Les templates rétablissent les espaces à l’affichage, tandis que les URL restent sans espace :
```text
@@ -201,13 +203,13 @@ draft = true
Pour actualiser une fiche :
```sh
./scripts/update-content.py src/content/vocabulaire/bītum.md
./scripts/update-content.rb src/content/vocabulaire/bītum.md
```
La forme relative à `src/content/` est également acceptée :
```sh
./scripts/update-content.py vocabulaire/bītum.md
./scripts/update-content.rb vocabulaire/bītum.md
```
Le script refuse les index, les pages autonomes et les chemins extérieurs aux cinq sections. Il remplace l’unique ligne `updated` par l’heure courante :
@@ -314,7 +316,7 @@ Le corps Markdown reste libre. Rubriques possibles :
Commande :
```sh
./scripts/new-content.py signes 113 --title BE
./scripts/new-content.rb signes 113 --title BE
```
Champs propres :
@@ -411,8 +413,8 @@ Ils sont ajoutés lorsqu’ils apportent un contexte réel : occurrence dans un
Un bloc délimité par trois accents graves et associé à une langue reçoit automatiquement la coloration syntaxique :
````markdown
```python
print("šulmu")
```ruby
puts "šulmu"
```
````
@@ -420,45 +422,22 @@ Zola génère `giallo.css`, tandis que le HTML rendu utilise les classes corresp
## Ce que contrôle le validateur
`check-content.py` contrôle uniquement les fiches des cinq sections. Il ignore les fichiers `_index.md` et les pages placées directement dans `src/content/`.
`check-content.rb` contrôle uniquement les fiches des cinq sections. Il ignore les fichiers `_index.md` et les pages placées directement dans `src/content/`.
Pour chaque fiche, il vérifie :
- le nom de fichier en Unicode NFC ;
- les identifiants en minuscules avec lettres Unicode, chiffres et tirets ;
- la forme `mzl-NNN.md` pour les signes ;
- la lecture en UTF-8 ;
- la présence d’un front matter délimité par `+++` ;
- la validité du TOML ;
- la présence des champs communs `title`, `date`, `description` et `draft` ;
- exactement une ligne `updated`, commentée ou active ;
- `title` et `description` de type chaîne ;
- `date` de type horodatage TOML ;
- `draft` de type booléen ;
- `updated`, lorsqu’il est actif, de type horodatage TOML.
- pour le vocabulaire, une nature grammaticale reconnue et les champs `[extra]` attendus ;
- pour les autres sections, les champs propres à leur modèle.
Pour le vocabulaire, il vérifie également :
Le validateur Ruby reste volontairement simple : il ne réimplémente pas un parseur TOML et ne contrôle pas les types de toutes les valeurs. **Zola reste responsable de la syntaxe TOML, des liens, des taxonomies et des templates.** Cette séparation évite toute dépendance Ruby supplémentaire.
- exactement une nature grammaticale reconnue ;
- tous les champs `[extra]` prévus pour cette nature ;
- des chaînes pour les champs simples ;
- un tableau de chaînes pour `logograms`.
Pour les autres sections, il vérifie :
- `banner`, `banner_alt` et `banner_credit` pour les articles ;
- `themes` pour la grammaire ;
- `sign`, `mzl` et `lectures` pour les signes ;
- `genres` pour les textes.
Par convention, les termes composés de `themes` et `genres` utilisent des tirets. Cette convention relève de la rédaction et n’est pas contrôlée par le validateur.
Le validateur accepte les chaînes et tableaux vides. Il ne contrôle pas :
- la qualité ou l’exactitude linguistique des valeurs ;
- les champs supplémentaires ;
- la correspondance entre le numéro MZL du front matter et le nom du fichier.
Zola reste responsable des liens, taxonomies et templates. Le générateur et le validateur appliquent les mêmes conventions de nommage ; le générateur reste responsable de produire des squelettes complets.
Le générateur et le validateur appliquent les mêmes conventions de nommage. Le générateur produit des squelettes complets ; le validateur vérifie surtout qu’aucun champ structurel n’a disparu.
## Vérification avant publication
@@ -469,5 +448,5 @@ Avant de publier ou déployer :
- utiliser `draft = false` uniquement pour un contenu prêt ;
- utiliser des tirets dans les thèmes et genres composés ;
- éviter les rubriques vides et les textes d’attente ;
- lancer `update-content.py` seulement après une modification substantielle ;
- lancer `update-content.rb` seulement après une modification substantielle ;
- exécuter le validateur, `zola check`, la construction avec brouillons, puis la construction publique.