humalis 1.0.3 → 1.1.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/LICENSE +85 -201
- package/LICENSE.en.md +86 -0
- package/NOTICE +6 -3
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/analyse/accessibilite.js +13 -5
- package/dist/analyse/analyse.js +43 -3
- package/dist/analyse/ecran.js +1 -1
- package/dist/analyse/langues.js +30 -10
- package/dist/analyse/medias.js +4 -1
- package/dist/analyse/navigation.js +35 -0
- package/dist/analyse/niveaux.js +33 -0
- package/dist/analyse/noms.js +1 -1
- package/dist/analyse/site.js +30 -8
- package/dist/cibles/commun/colorerCode.js +59 -0
- package/dist/cibles/commun/mouvement.js +110 -4
- package/dist/cibles/mobile/projet.js +7 -2
- package/dist/cibles/mobile/rendu.js +6 -3
- package/dist/cibles/statique/elements-js.js +1 -1
- package/dist/cibles/statique/page.js +99 -6
- package/dist/cibles/statique/projet.js +31 -0
- package/dist/cibles/statique/valeurs.js +5 -1
- package/dist/cibles/statique/widgets.js +1 -1
- package/dist/cibles/web/css-ecran.js +22 -1
- package/dist/cibles/web/ecran.js +161 -16
- package/dist/cibles/web/interactions.js +50 -3
- package/dist/cibles/web/projet.js +29 -2
- package/dist/cibles/web/theme.js +11 -2
- package/dist/cibles/web/valeurs.js +17 -0
- package/dist/cibles/web/widgets.js +1 -1
- package/dist/i18n/messages.js +2 -0
- package/dist/lexer/lexer.js +106 -3
- package/dist/navigateur.js +5274 -0
- package/dist/parser/interactions.js +6 -2
- package/dist/parser/langues.js +1 -1
- package/dist/parser/medias.js +6 -1
- package/dist/parser/miseEnPage.js +1 -1
- package/dist/parser/parser.js +85 -3
- package/dist/parser/theme.js +10 -1
- package/dist/ri/construire.js +24 -1
- package/dist/vocabulaire/table-ecran.js +3 -3
- package/dist/vocabulaire/table-interactions.js +16 -1
- package/dist/vocabulaire/table.js +4 -4
- package/docs/guide.en.md +170 -2
- package/docs/guide.md +171 -1
- package/llms.txt +14 -1
- package/package.json +7 -4
package/docs/guide.md
CHANGED
|
@@ -93,6 +93,14 @@ Un texte qui s'affiche s'écrit entre guillemets : `titre "Bienvenue"`. Sans
|
|
|
93
93
|
guillemets, c'est un nom de variable : `texte prenom` affiche ce que contient
|
|
94
94
|
la variable `prenom`.
|
|
95
95
|
|
|
96
|
+
Pour mettre un guillemet dans un texte, écris `\"` :
|
|
97
|
+
|
|
98
|
+
```humalis
|
|
99
|
+
page "citation" :
|
|
100
|
+
titre "Une citation"
|
|
101
|
+
texte "Elle a dit \"bonjour\" en entrant."
|
|
102
|
+
```
|
|
103
|
+
|
|
96
104
|
### Les accents sont permis, jamais obligatoires
|
|
97
105
|
|
|
98
106
|
`si age est supérieur ou égal à 18` et `si age est superieur ou egal a 18` se
|
|
@@ -167,6 +175,94 @@ page "carte" :
|
|
|
167
175
|
l'ordre des niveaux, sans en sauter : les lecteurs d'écran s'en servent pour
|
|
168
176
|
parcourir la page.
|
|
169
177
|
|
|
178
|
+
Dans un bloc placé sous un sous-titre, un `soustitre` descend d'un niveau tout
|
|
179
|
+
seul : la carte d'une section devient un niveau 3. `avec niveau` reste possible
|
|
180
|
+
pour choisir soi-même.
|
|
181
|
+
|
|
182
|
+
```humalis
|
|
183
|
+
page "accueil" :
|
|
184
|
+
titre "Accueil"
|
|
185
|
+
section :
|
|
186
|
+
soustitre "Nos pages"
|
|
187
|
+
grille :
|
|
188
|
+
bloc :
|
|
189
|
+
soustitre "Exemples"
|
|
190
|
+
texte "Six applications à essayer."
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Dans un `titre`, un `soustitre` ou un `texte`, `{accent "…"}` met quelques mots
|
|
194
|
+
en valeur avec la couleur de marque. Le texte reste lisible normalement par les
|
|
195
|
+
lecteurs d'écran et dans le titre de l'onglet.
|
|
196
|
+
|
|
197
|
+
```humalis
|
|
198
|
+
page "offre" :
|
|
199
|
+
titre "Une offre {accent "simple"}"
|
|
200
|
+
texte "Prix : {accent "gratuit"} pour toujours"
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Listes
|
|
204
|
+
|
|
205
|
+
`liste :` crée des puces ; `liste numerotee :` numérote chaque élément. Chaque instruction du bloc devient une entrée.
|
|
206
|
+
|
|
207
|
+
```humalis
|
|
208
|
+
page "guide" :
|
|
209
|
+
liste :
|
|
210
|
+
texte "Installer Node.js"
|
|
211
|
+
texte "Créer le projet"
|
|
212
|
+
liste numerotee :
|
|
213
|
+
texte "Écrire le fichier"
|
|
214
|
+
texte "Compiler"
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Code dans une phrase
|
|
218
|
+
|
|
219
|
+
Dans un texte, `{code "…"}` affiche un court morceau de code à chasse fixe.
|
|
220
|
+
|
|
221
|
+
```humalis
|
|
222
|
+
page "guide" :
|
|
223
|
+
texte "Écris {code "titre"} pour donner un titre."
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Bloc de code
|
|
227
|
+
|
|
228
|
+
`code langage :` recopie les lignes indentées sans les interpréter ; le langage est facultatif.
|
|
229
|
+
|
|
230
|
+
```humalis
|
|
231
|
+
page "guide" :
|
|
232
|
+
code humalis :
|
|
233
|
+
page "accueil" :
|
|
234
|
+
titre "Bienvenue"
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
`avec animation frappe` écrit le code lettre par lettre, avec un curseur ;
|
|
238
|
+
`avec animation frappe au defilement` attend que le bloc arrive à l'écran. Le
|
|
239
|
+
vrai code reste en place pendant la frappe (lecteurs d'écran, bouton Copier), et
|
|
240
|
+
il s'affiche tout de suite si la personne a demandé de réduire les animations.
|
|
241
|
+
Sur le téléphone, le code s'affiche entier.
|
|
242
|
+
|
|
243
|
+
```humalis
|
|
244
|
+
page "accueil" :
|
|
245
|
+
code humalis avec animation frappe :
|
|
246
|
+
page "boutique" :
|
|
247
|
+
titre "Nos produits"
|
|
248
|
+
bouton "Commander"
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Tableau
|
|
252
|
+
|
|
253
|
+
Un tableau a une légende, des colonnes et des rangées de même largeur. Une traduction peut suivre chaque cellule.
|
|
254
|
+
|
|
255
|
+
```humalis
|
|
256
|
+
langues :
|
|
257
|
+
francais
|
|
258
|
+
anglais
|
|
259
|
+
|
|
260
|
+
page "guide" :
|
|
261
|
+
tableau "Les commandes" en anglais "Commands" :
|
|
262
|
+
colonnes "Commande", "Rôle" en anglais "Role"
|
|
263
|
+
rangee "humalis compile", "produit le projet" en anglais "builds the project"
|
|
264
|
+
```
|
|
265
|
+
|
|
170
266
|
### Image
|
|
171
267
|
|
|
172
268
|
```humalis
|
|
@@ -363,10 +459,35 @@ page "accueil" :
|
|
|
363
459
|
Humalis vérifie le contraste : une couleur de texte trop pâle sur le fond est
|
|
364
460
|
signalée à la compilation.
|
|
365
461
|
|
|
462
|
+
Une police peut être livrée avec le site, sans dépendre d'un service extérieur :
|
|
463
|
+
`police titres "Space Grotesk" depuis "./polices/space-grotesk.woff2"` (fichiers
|
|
464
|
+
`.woff2`, `.woff`, `.ttf` ou `.otf`).
|
|
465
|
+
|
|
466
|
+
Le visiteur peut aussi passer d'un thème à l'autre. `basculer theme` passe au
|
|
467
|
+
thème inverse de celui qu'on voit, et `si theme est sombre :` (ou `clair`)
|
|
468
|
+
réagit au thème affiché :
|
|
469
|
+
|
|
470
|
+
```humalis
|
|
471
|
+
theme :
|
|
472
|
+
mode automatique
|
|
473
|
+
|
|
474
|
+
page "accueil" :
|
|
475
|
+
titre "Accueil"
|
|
476
|
+
bouton "Changer de thème"
|
|
477
|
+
quand l'utilisateur clique sur "Changer de thème" :
|
|
478
|
+
basculer theme
|
|
479
|
+
si theme est sombre :
|
|
480
|
+
texte "Bonne soirée"
|
|
481
|
+
sinon :
|
|
482
|
+
texte "Bonne journée"
|
|
483
|
+
```
|
|
484
|
+
|
|
366
485
|
### L'en-tête et le pied communs
|
|
367
486
|
|
|
368
487
|
`entete :` et `pied :` s'affichent sur toutes les pages. Une page peut s'en
|
|
369
|
-
passer avec `sans entete` ou `sans pied`.
|
|
488
|
+
passer avec `sans entete` ou `sans pied`. Avec un en-tête, Humalis ajoute seul
|
|
489
|
+
un lien « Aller au contenu », caché tant que le clavier ne l'atteint pas : il
|
|
490
|
+
permet de sauter l'en-tête.
|
|
370
491
|
|
|
371
492
|
```humalis
|
|
372
493
|
entete avec colle :
|
|
@@ -452,6 +573,22 @@ page "carte" :
|
|
|
452
573
|
```
|
|
453
574
|
|
|
454
575
|
Dans un `menu`, le lien de la page où l'on est est marqué comme actif.
|
|
576
|
+
Les liens d'un menu passent à la ligne quand la place manque. Un menu que ton
|
|
577
|
+
CSS met en colonne (`flex-direction: column`) garde ce retour à la ligne :
|
|
578
|
+
ajoute `flex-wrap: nowrap` pour qu'il défile au lieu d'ouvrir une deuxième
|
|
579
|
+
colonne.
|
|
580
|
+
|
|
581
|
+
Un `menu repliable :` se range derrière un bouton « Menu » sur un petit écran
|
|
582
|
+
(téléphone) ; un lien choisi referme le menu. Sur grand écran, il reste ouvert :
|
|
583
|
+
|
|
584
|
+
```humalis
|
|
585
|
+
page "accueil" :
|
|
586
|
+
menu repliable :
|
|
587
|
+
lien "Accueil" vers "accueil"
|
|
588
|
+
lien "La carte" vers "accueil"
|
|
589
|
+
lien "Réserver" vers "accueil"
|
|
590
|
+
titre "Accueil"
|
|
591
|
+
```
|
|
455
592
|
|
|
456
593
|
---
|
|
457
594
|
|
|
@@ -497,6 +634,17 @@ Les animations : `apparition`, `montee`, `agrandissement`. Les effets au
|
|
|
497
634
|
survol : `agrandi`, `leve`. Humalis respecte le réglage « réduire les
|
|
498
635
|
animations » de la personne.
|
|
499
636
|
|
|
637
|
+
Sur un bloc, `et en cascade` fait apparaître ses enfants l'un après l'autre :
|
|
638
|
+
|
|
639
|
+
```humalis
|
|
640
|
+
page "accueil" :
|
|
641
|
+
titre "Nos plats"
|
|
642
|
+
grille avec animation montee au defilement et en cascade :
|
|
643
|
+
texte "Soupe du jour"
|
|
644
|
+
texte "Risotto"
|
|
645
|
+
texte "Tarte aux pommes"
|
|
646
|
+
```
|
|
647
|
+
|
|
500
648
|
---
|
|
501
649
|
|
|
502
650
|
## 9. Les variables et les calculs
|
|
@@ -893,8 +1041,10 @@ Les actions s'écrivent dans un événement.
|
|
|
893
1041
|
| `afficher erreur "…"` | un message d'erreur |
|
|
894
1042
|
| `montrer "nom"`, `cacher "nom"` | fait apparaître ou disparaître un élément |
|
|
895
1043
|
| `changer x par …` | change une variable |
|
|
1044
|
+
| `changer x par champ "Libellé"` | prend la valeur actuelle d'un champ |
|
|
896
1045
|
| `changer texte de "nom" par "…"` | change le texte d'un élément |
|
|
897
1046
|
| `ajouter … à liste`, `retirer … de liste` | modifie une liste |
|
|
1047
|
+
| `ajouter champ "Libellé" à liste` | ajoute la valeur actuelle d'un champ |
|
|
898
1048
|
| `rediriger vers "page"` | va à une page |
|
|
899
1049
|
| `revenir vers "page"` | revient en arrière, ou va à cette page |
|
|
900
1050
|
| `envoyer requete vers "…"` | appelle un serveur (voir [le serveur](#22-relier-les-pages-au-serveur)) |
|
|
@@ -915,6 +1065,22 @@ page "merci" :
|
|
|
915
1065
|
titre "Merci !"
|
|
916
1066
|
```
|
|
917
1067
|
|
|
1068
|
+
Dans une action, `champ "Libellé"` lit ce que la personne a saisi au moment du clic. Un champ nombre donne un nombre, une case à cocher donne vrai ou faux, et les autres champs donnent du texte. Le libellé est celui de la langue de base, même si le champ a une traduction.
|
|
1069
|
+
|
|
1070
|
+
```humalis
|
|
1071
|
+
page "taches" :
|
|
1072
|
+
variable taches = ["Acheter du pain"]
|
|
1073
|
+
variable dernier = ""
|
|
1074
|
+
champ "Nouvelle tâche"
|
|
1075
|
+
bouton "Ajouter"
|
|
1076
|
+
quand l'utilisateur clique sur "Ajouter" :
|
|
1077
|
+
ajouter champ "Nouvelle tâche" à taches
|
|
1078
|
+
changer dernier par champ "Nouvelle tâche"
|
|
1079
|
+
texte "Dernière ajoutée : {dernier}"
|
|
1080
|
+
pour chaque t dans taches :
|
|
1081
|
+
texte t
|
|
1082
|
+
```
|
|
1083
|
+
|
|
918
1084
|
---
|
|
919
1085
|
|
|
920
1086
|
## 16. Les messages, les fenêtres et les questions
|
|
@@ -1534,9 +1700,13 @@ page "catalogue" :
|
|
|
1534
1700
|
```
|
|
1535
1701
|
|
|
1536
1702
|
- `en anglais "…"` donne la version d'un texte.
|
|
1703
|
+
- `sans traduction` garde le même texte dans toutes les langues, pour un nom
|
|
1704
|
+
propre : `lien "GitHub" sans traduction vers "https://github.com"`.
|
|
1537
1705
|
- `traductions anglais :` traduit une seule fois un texte répété.
|
|
1538
1706
|
- `selecteur de langue` affiche le choix de la langue ; `changer langue par
|
|
1539
1707
|
anglais` et `si langue est anglais :` s'utilisent dans les événements.
|
|
1708
|
+
- Le message de `copier` se traduit comme les autres textes :
|
|
1709
|
+
`copier code avec message "Copié" en anglais "Copied"`.
|
|
1540
1710
|
- Humalis signale à la compilation tout texte qui n'a pas sa traduction. Les
|
|
1541
1711
|
messages de Humalis (champ obligatoire, chargement…) suivent la langue.
|
|
1542
1712
|
|
package/llms.txt
CHANGED
|
@@ -5,7 +5,7 @@ Humalis est un langage en français. Un fichier .humalis décrit des pages, des
|
|
|
5
5
|
## Grammaire en une page
|
|
6
6
|
|
|
7
7
|
- Une page commence par `page "nom" :`. Son contenu est indenté de 4 espaces ; chaque bloc ajoute 4 espaces.
|
|
8
|
-
- Les éléments d’écran pris en charge : titre, texte, image, bouton, lien, champ, formulaire, section, bloc, ligne, colonne, grille, sous-titre, fenêtre, menu, icône, badge, avatar, progression, chargement, étoiles, compteur, code QR, onglets, onglet, déroulant, accordéon, carrousel, fil d’Ariane, audio, fichier, carte, marqueur, graphique, série, sélecteur. Leur texte s’écrit entre guillemets.
|
|
8
|
+
- Les éléments d’écran pris en charge : titre, texte, image, bouton, lien, champ, formulaire, section, bloc, ligne, colonne, grille, sous-titre, liste, tableau, fenêtre, menu, icône, badge, avatar, progression, chargement, étoiles, compteur, code QR, onglets, onglet, déroulant, accordéon, carrousel, fil d’Ariane, audio, fichier, carte, marqueur, graphique, série, sélecteur. Leur texte s’écrit entre guillemets.
|
|
9
9
|
- Déclare une valeur avec `variable nom = valeur` ; une condition commence par `si ... :`.
|
|
10
10
|
- Les événements pris en charge : quand, utilisateur, clique, sur, survole, charge, soumis, ecrit, arrête d’écrire, appuie, arrive en bas de, l’ordre de … change. Écris l’événement sous l’élément visé, puis l’action dans son bloc.
|
|
11
11
|
- Les actions prises en charge : afficher, erreur, montrer, cacher, changer, rediriger, ajouter, retirer, envoyer, requête, connecter, déconnecter, revenir, réussite, avertissement, pendant, disparaître, action, après, toutes, copier, partager, confirmer.
|
|
@@ -27,6 +27,15 @@ page "accueil" :
|
|
|
27
27
|
|
|
28
28
|
## Messages d’erreur
|
|
29
29
|
|
|
30
|
+
- Code dans une phrase sans guillemets : code attend un texte entre guillemets
|
|
31
|
+
- Une ligne inconnue dans un tableau : un tableau contient « colonnes » et « rangee »
|
|
32
|
+
- Deux-points après un tableau : deux-points après la légende du tableau
|
|
33
|
+
- Bloc de code dans un événement : un bloc de code se place dans une page
|
|
34
|
+
- Tableau sans légende : un tableau attend une légende
|
|
35
|
+
- Tableau sans colonnes : un tableau attend une ligne « colonnes »
|
|
36
|
+
- Rangée de mauvaise largeur : la rangée a 1 cellules
|
|
37
|
+
- Texte accentué sans guillemets : accent attend un texte entre guillemets
|
|
38
|
+
- Accent hors d’un texte de page : accent s’emploie seulement
|
|
30
39
|
- Un élément sans texte : n'a pas de texte
|
|
31
40
|
- Un libellé sans lettre : ne contient aucune lettre
|
|
32
41
|
- Deux champs de même nom : deux champs du même formulaire
|
|
@@ -224,6 +233,8 @@ page "accueil" :
|
|
|
224
233
|
- Un nom d’ancre qui n’est pas valable : n'est pas valable
|
|
225
234
|
- Deux ancres de même nom : est déjà utilisée dans la page
|
|
226
235
|
- Un lien vers une ancre qui n’existe pas : n'existe pas dans la page « carte »
|
|
236
|
+
- Un lien de l’en-tête ou du pied vers une ancre qui n’existe nulle part : n'existe dans aucune page
|
|
237
|
+
- Une page et un composant qui auraient le même nom : auraient le même nom dans le code produit
|
|
227
238
|
- Une adresse qui peut exécuter du code : est refusée
|
|
228
239
|
- Des paramètres de page sur une adresse externe : n'a pas de paramètres de page
|
|
229
240
|
- « nouvel onglet » sur autre chose qu’un lien : s'applique à un lien
|
|
@@ -257,6 +268,8 @@ page "accueil" :
|
|
|
257
268
|
- Une animation sans nom : il manque le nom de l’animation
|
|
258
269
|
- « duree » ou « delai » sans animation : donne l’attente d’une animation
|
|
259
270
|
- « au defilement » sans animation : « au defilement » suit le nom d’une animation
|
|
271
|
+
- « en cascade » sur un simple élément : il s’écrit sur un bloc
|
|
272
|
+
- Un texte traduit et « sans traduction » : gardez l’un ou l’autre
|
|
260
273
|
- Une animation sur un champ : pas d’animation sur un champ
|
|
261
274
|
- Trop d’éléments animés au défilement : trop de mouvement
|
|
262
275
|
- Une image sans description : décrivez l’image pour les personnes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "humalis",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Un seul langage, en français, pour créer une application complète : web, mobile, desktop et serveur",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"dist",
|
|
11
11
|
"llms.txt",
|
|
12
12
|
"NOTICE",
|
|
13
|
+
"LICENSE.en.md",
|
|
13
14
|
"README.en.md",
|
|
14
15
|
"docs/guide.md",
|
|
15
16
|
"docs/guide.en.md",
|
|
@@ -21,7 +22,7 @@
|
|
|
21
22
|
"node": ">=24"
|
|
22
23
|
},
|
|
23
24
|
"scripts": {
|
|
24
|
-
"build": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc",
|
|
25
|
+
"build": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc && rolldown dist/navigateur.js --format esm --minify --file dist/navigateur.js",
|
|
25
26
|
"test": "vitest run",
|
|
26
27
|
"typecheck": "tsc --noEmit",
|
|
27
28
|
"essai:web": "node scripts/essai-web.mjs",
|
|
@@ -39,6 +40,7 @@
|
|
|
39
40
|
"essai:desktop": "node scripts/essai-desktop.mjs",
|
|
40
41
|
"essai:formulaire": "node scripts/essai-formulaire.mjs",
|
|
41
42
|
"essai:vitrine": "node scripts/essai-vitrine.mjs",
|
|
43
|
+
"site:doc": "node scripts/doc-site.mjs",
|
|
42
44
|
"llms": "node --disable-warning=ExperimentalWarning --experimental-loader ./scripts/charger-typescript.mjs scripts/generer-llms.mjs",
|
|
43
45
|
"essai:medias": "node scripts/essai-medias.mjs",
|
|
44
46
|
"essai:interactions": "node scripts/essai-interactions.mjs",
|
|
@@ -61,8 +63,8 @@
|
|
|
61
63
|
"compiler",
|
|
62
64
|
"french"
|
|
63
65
|
],
|
|
64
|
-
"license": "
|
|
65
|
-
"author": "
|
|
66
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
67
|
+
"author": "emch04",
|
|
66
68
|
"repository": {
|
|
67
69
|
"type": "git",
|
|
68
70
|
"url": "git+https://github.com/emch04/humalis.git"
|
|
@@ -73,6 +75,7 @@
|
|
|
73
75
|
},
|
|
74
76
|
"devDependencies": {
|
|
75
77
|
"@types/node": "^26.2.0",
|
|
78
|
+
"rolldown": "1.2.4",
|
|
76
79
|
"typescript": "^7.0.2",
|
|
77
80
|
"vitest": "^4.1.10"
|
|
78
81
|
}
|