humalis 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cibles/commun/colorerCode.js +3 -10
- package/dist/cibles/commun/mouvement.js +9 -2
- package/dist/cibles/web/css-ecran.js +3 -2
- package/dist/cibles/web/projet.js +24 -9
- package/dist/cli.js +7 -1
- package/dist/lexer/lexer.js +27 -0
- package/dist/navigateur.js +68 -68
- package/dist/outils/version.js +15 -0
- package/dist/parser/langues.js +30 -2
- package/dist/vocabulaire/table-langues.js +1 -1
- package/docs/guide.en.md +12 -3
- package/docs/guide.md +12 -2
- package/llms.txt +4 -0
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
/** La version du paquet, lue dans son package.json (deux dossiers au-dessus de src/outils/ comme de dist/outils/). */
|
|
3
|
+
export function versionHumalis() {
|
|
4
|
+
return JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8')).version;
|
|
5
|
+
}
|
|
6
|
+
/** « humalis --version » ou « humalis --aide » : le texte à afficher, ou undefined pour une autre commande. */
|
|
7
|
+
export function reponseSimple(arguments_, aide) {
|
|
8
|
+
if (arguments_.length !== 1)
|
|
9
|
+
return undefined;
|
|
10
|
+
if (['--version', '-v', 'version'].includes(arguments_[0]))
|
|
11
|
+
return `humalis ${versionHumalis()}`;
|
|
12
|
+
if (['--aide', '--help', '-h', 'aide'].includes(arguments_[0]))
|
|
13
|
+
return aide;
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
package/dist/parser/langues.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* L'analyse syntaxique des langues (plan 2026-10-30-qualite-publication,
|
|
3
3
|
* partie 1, décisions Q1 à Q4) :
|
|
4
4
|
*
|
|
5
|
-
* - le bloc « langues : » en haut du fichier, une langue par ligne
|
|
5
|
+
* - le bloc « langues : » en haut du fichier, une langue par ligne, ou sur la
|
|
6
|
+
* même ligne séparées par des virgules : « langues : francais, anglais » ;
|
|
6
7
|
* - le bloc « traductions anglais : », des lignes « "texte" : "version" » ;
|
|
7
8
|
* - la version écrite à côté d'un texte : « "Bienvenue" en anglais "Welcome" » ;
|
|
8
9
|
* - l'élément « selecteur de langue », en tête de ligne.
|
|
@@ -39,13 +40,40 @@ export function analyserLangues(flux) {
|
|
|
39
40
|
const debut = flux.avancer();
|
|
40
41
|
flux.avancer();
|
|
41
42
|
const langues = { type: 'Langues', langues: [], ligne: debut.ligne };
|
|
43
|
+
const ajouter = (jeton) => langues.langues.push({ mot: normaliser(jeton.original ?? jeton.valeur), ligne: jeton.ligne });
|
|
44
|
+
// « langues : francais, anglais » : sur la ligne même, séparées par des virgules.
|
|
45
|
+
if (!flux.verifier('FIN_LIGNE') && !flux.estFini()) {
|
|
46
|
+
for (;;) {
|
|
47
|
+
const jeton = flux.actuel();
|
|
48
|
+
if (!estMot(jeton)) {
|
|
49
|
+
throw new ErreurSyntaxique(`après « langues : », on attend le nom d'une langue, par exemple « francais » ou « anglais » : à la place, on trouve « ${jeton.valeur || jeton.type} »`, jeton.ligne);
|
|
50
|
+
}
|
|
51
|
+
flux.avancer();
|
|
52
|
+
ajouter(jeton);
|
|
53
|
+
if (flux.verifier('FIN_LIGNE') || flux.estFini())
|
|
54
|
+
break;
|
|
55
|
+
if (flux.actuel().type === 'PONCTUATION' && flux.actuel().valeur === ',') {
|
|
56
|
+
flux.avancer();
|
|
57
|
+
if (flux.verifier('FIN_LIGNE') || flux.estFini()) {
|
|
58
|
+
throw new ErreurSyntaxique(`après la virgule, il manque le nom d'une langue : « langues : francais, anglais »`, jeton.ligne);
|
|
59
|
+
}
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
throw new ErreurSyntaxique(`séparez les langues par des virgules : « langues : francais, anglais ». À la place de la virgule, on trouve « ${flux.actuel().valeur || flux.actuel().type} »`, jeton.ligne);
|
|
63
|
+
}
|
|
64
|
+
flux.sauterFinsDeLigne();
|
|
65
|
+
if (flux.verifier('INDENT')) {
|
|
66
|
+
throw new ErreurSyntaxique(`les langues s'écrivent soit sur la ligne, soit en dessous, une par ligne, pas les deux à la fois`, flux.actuel().ligne);
|
|
67
|
+
}
|
|
68
|
+
return langues;
|
|
69
|
+
}
|
|
42
70
|
lignesDuBloc(flux, () => {
|
|
43
71
|
const jeton = flux.actuel();
|
|
44
72
|
if (!estMot(jeton)) {
|
|
45
73
|
throw new ErreurSyntaxique(`une ligne du bloc « langues » est le nom d'une langue, par exemple « francais » ou « anglais » : à la place, on trouve « ${jeton.valeur || jeton.type} »`, jeton.ligne);
|
|
46
74
|
}
|
|
47
75
|
flux.avancer();
|
|
48
|
-
|
|
76
|
+
ajouter(jeton);
|
|
49
77
|
});
|
|
50
78
|
return langues;
|
|
51
79
|
}
|
|
@@ -42,7 +42,7 @@ export const ENTREES_LANGUES = [
|
|
|
42
42
|
contextes: ['declaration'],
|
|
43
43
|
cibles: ecran('src/humalis/langue.tsx : LANGUES, t(), useLangue(), <html lang>', 'humalis/langue.tsx : la langue du téléphone par expo-localization, le choix gardé par AsyncStorage', 'humalis.js : t(), langue(), changerLangue() ; le HTML de départ dans la première langue'),
|
|
44
44
|
couvre: ['html:lang', 'i18n', 'navigator.languages', 'expo-localization'],
|
|
45
|
-
description: 'Le bloc « langues : » en haut du fichier déclare les langues du site, une par ligne. La première est celle des textes écrits tels quels ; les autres s’ajoutent après un texte (« en anglais "…" ») ou dans un bloc « traductions ». La personne voit d’abord la langue de son navigateur (ou de son téléphone), si le site la parle.',
|
|
45
|
+
description: 'Le bloc « langues : » en haut du fichier déclare les langues du site, une par ligne, ou sur la même ligne séparées par des virgules (« langues : francais, anglais »). La première est celle des textes écrits tels quels ; les autres s’ajoutent après un texte (« en anglais "…" ») ou dans un bloc « traductions ». La personne voit d’abord la langue de son navigateur (ou de son téléphone), si le site la parle.',
|
|
46
46
|
exemple: `${LANGUES}page "accueil" :\n selecteur de langue\n titre "Bienvenue" en anglais "Welcome"`,
|
|
47
47
|
statut: 'supporte',
|
|
48
48
|
etape: 9,
|
package/docs/guide.en.md
CHANGED
|
@@ -228,11 +228,14 @@ page "guide" :
|
|
|
228
228
|
|
|
229
229
|
### Code within a sentence
|
|
230
230
|
|
|
231
|
-
In text,
|
|
231
|
+
In text, a piece of code goes between backticks, as in every documentation:
|
|
232
|
+
it shows in a monospace font, as written, quotes and braces included.
|
|
233
|
+
`{code "…"}` does the same.
|
|
232
234
|
|
|
233
235
|
```humalis
|
|
234
236
|
page "guide" :
|
|
235
|
-
texte "Write
|
|
237
|
+
texte "Write `titre` to add a heading."
|
|
238
|
+
texte "A text: `texte "Hello {firstname}"`."
|
|
236
239
|
```
|
|
237
240
|
|
|
238
241
|
### Code block
|
|
@@ -747,6 +750,10 @@ A variable (`variable`) holds a number, a text, `vrai` (true) or `faux`
|
|
|
747
750
|
the French way: `12,50`. Inside a text, `{firstname}` shows the variable's
|
|
748
751
|
value.
|
|
749
752
|
|
|
753
|
+
A name cannot be one of the small French words Humalis skips so the code reads
|
|
754
|
+
like a sentence: `le`, `la`, `les`, `un`, `une`, `des`, `de`, `du`, `a`, `au`,
|
|
755
|
+
`aux`, `se`. Write `variable total = 0`, not `variable a = 0`.
|
|
756
|
+
|
|
750
757
|
### Changing a variable
|
|
751
758
|
|
|
752
759
|
```humalis
|
|
@@ -1824,7 +1831,8 @@ page "catalogue" :
|
|
|
1824
1831
|
lien "Back to home" en francais "Retour à l'accueil" vers "home"
|
|
1825
1832
|
```
|
|
1826
1833
|
|
|
1827
|
-
- `langues :` lists the languages (`francais`, `anglais`…)
|
|
1834
|
+
- `langues :` lists the languages (`francais`, `anglais`…), one per line or
|
|
1835
|
+
on the same line separated by commas: `langues : anglais, francais`.
|
|
1828
1836
|
- `en francais "…"` gives another language's version of a text.
|
|
1829
1837
|
- `sans traduction` ("without translation") keeps the same text in every
|
|
1830
1838
|
language, for a proper noun: `lien "GitHub" sans traduction vers "https://github.com"`.
|
|
@@ -1959,6 +1967,7 @@ texte "…" est absent` (a text is not shown).
|
|
|
1959
1967
|
| Command | Role |
|
|
1960
1968
|
|---|---|
|
|
1961
1969
|
| `humalis nouveau <name>` | creates a project |
|
|
1970
|
+
| `humalis --version` | shows the installed version (`humalis --help`: the usage) |
|
|
1962
1971
|
| `humalis developper` | runs the site and recompiles it on every save |
|
|
1963
1972
|
| `humalis compile <file> --cible <target> --sortie <folder>` | generates a target's project |
|
|
1964
1973
|
| `humalis compile <file> --cible web --composants <folder>` | generates React components to import elsewhere |
|
package/docs/guide.md
CHANGED
|
@@ -218,11 +218,14 @@ page "guide" :
|
|
|
218
218
|
|
|
219
219
|
### Code dans une phrase
|
|
220
220
|
|
|
221
|
-
Dans un texte,
|
|
221
|
+
Dans un texte, un morceau de code s'écrit entre accents graves, comme dans
|
|
222
|
+
toutes les documentations : il s'affiche à chasse fixe, tel quel, guillemets et
|
|
223
|
+
accolades compris. `{code "…"}` fait la même chose.
|
|
222
224
|
|
|
223
225
|
```humalis
|
|
224
226
|
page "guide" :
|
|
225
|
-
texte "Écris
|
|
227
|
+
texte "Écris `titre` pour donner un titre."
|
|
228
|
+
texte "Un texte : `texte "Bonjour {prenom}"`."
|
|
226
229
|
```
|
|
227
230
|
|
|
228
231
|
### Bloc de code
|
|
@@ -707,6 +710,10 @@ Une variable contient un nombre, un texte, `vrai` ou `faux`, une liste, une
|
|
|
707
710
|
fiche, ou `rien`. Les nombres à virgule s'écrivent à la française : `12,50`.
|
|
708
711
|
Dans un texte, `{prenom}` affiche la valeur de la variable.
|
|
709
712
|
|
|
713
|
+
Un nom ne peut pas être un des petits mots que Humalis ignore pour se lire
|
|
714
|
+
comme une phrase : `le`, `la`, `les`, `un`, `une`, `des`, `de`, `du`, `a`, `au`,
|
|
715
|
+
`aux`, `se`. Écris `variable total = 0`, pas `variable a = 0`.
|
|
716
|
+
|
|
710
717
|
### Changer une variable
|
|
711
718
|
|
|
712
719
|
```humalis
|
|
@@ -1741,6 +1748,8 @@ page "catalogue" :
|
|
|
1741
1748
|
lien "Retour à l'accueil" en anglais "Back to home" vers "accueil"
|
|
1742
1749
|
```
|
|
1743
1750
|
|
|
1751
|
+
- Les langues tiennent aussi sur une ligne, séparées par des virgules :
|
|
1752
|
+
`langues : francais, anglais` revient au même que le bloc.
|
|
1744
1753
|
- `en anglais "…"` donne la version d'un texte.
|
|
1745
1754
|
- `sans traduction` garde le même texte dans toutes les langues, pour un nom
|
|
1746
1755
|
propre : `lien "GitHub" sans traduction vers "https://github.com"`.
|
|
@@ -1871,6 +1880,7 @@ Les autres étapes : `remplir champ "email" avec "…"`, `aller vers "panier"`,
|
|
|
1871
1880
|
| Commande | Rôle |
|
|
1872
1881
|
|---|---|
|
|
1873
1882
|
| `humalis nouveau <nom>` | crée un projet |
|
|
1883
|
+
| `humalis --version` | affiche la version installée (`humalis --aide` : le mode d'emploi) |
|
|
1874
1884
|
| `humalis developper` | lance le site et le recompile à chaque enregistrement |
|
|
1875
1885
|
| `humalis compile <fichier> --cible <cible> --sortie <dossier>` | produit le projet d'une cible |
|
|
1876
1886
|
| `humalis compile <fichier> --cible web --composants <dossier>` | produit des composants React à importer ailleurs |
|
package/llms.txt
CHANGED
|
@@ -422,6 +422,10 @@ page "accueil" :
|
|
|
422
422
|
- Deux blocs « langues » : un seul bloc « langues »
|
|
423
423
|
- Le bloc « langues » après les pages : le bloc « langues » s'écrit en haut du fichier
|
|
424
424
|
- Une langue entre guillemets : une ligne du bloc « langues » est le nom d'une langue
|
|
425
|
+
- Une langue entre guillemets sur la ligne « langues : » : après « langues : », on attend le nom d'une langue
|
|
426
|
+
- Deux langues sans virgule : séparez les langues par des virgules
|
|
427
|
+
- Une virgule en fin de ligne des langues : après la virgule, il manque le nom d'une langue
|
|
428
|
+
- Des langues sur la ligne et en dessous : soit sur la ligne, soit en dessous
|
|
425
429
|
- Une langue que Humalis ne connaît pas : n'est pas une langue connue de Humalis
|
|
426
430
|
- Une langue pas encore disponible : n'est pas encore disponible
|
|
427
431
|
- Une langue écrite deux fois : est déjà dans le bloc « langues »
|