Ingrédients
Les ingrédients constituent la matière première de toute recette Gram.
Déclaration de base
Section intitulée « Déclaration de base »Pour déclarer un @ingrédient, utilisez le préfixe @. Si le nom de l’@ingrédient comporte des espaces ou exige une quantité précise, vous devez l’encapsuler avec des accolades {}. S’il s’agit d’un mot simple (sans espace) et sans quantité spécifique, les accolades deviennent facultatives (la quantité vaudra implicitement 1).
Pour préciser une unité de mesure (poids, volume, etc.), glissez-la directement après la valeur numérique au sein des accolades (l’espace entre le chiffre et l’unité est optionnel).
Ajustement des proportions & quantités fixes
Section intitulée « Ajustement des proportions & quantités fixes »Par défaut, le compilateur Gram ajuste les quantités d’un @ingrédient de manière strictement linéaire en fonction du nombre de portions demandées.
Si vous adaptez une recette de 2 à 4 portions, un @ingrédient avec {100 g} devient {200 g}.
Quantités fixes (=)
Section intitulée « Quantités fixes (=) »Cependant, certains @ingrédients (sel, épices, piment) ne supportent pas bien l’ajustement linéaire des proportions. Vous pouvez verrouiller leur quantité grâce au modificateur =.
Cela maintient le sel à 1 c.à.c, peu importe le nombre de portions calculé par l’utilisateur.
Modificateurs d’ingrédient
Section intitulée « Modificateurs d’ingrédient »Gram propose toute une batterie de modificateurs pour altérer le comportement d’un @ingrédient lors du parsing et dans la liste de courses. Ces modificateurs se collent immédiatement après le symbole @.
| Modificateur | Nom | Effet |
|---|---|---|
& | Référence | Fait référence à un @ingrédient précédemment déclaré. Ne l’ajoute PAS une seconde fois à la liste de courses. |
= | Fixe | Marque la quantité comme fixe (elle ne variera pas avec le nombre de portions). |
? | Optionnel | Marque l’@ingrédient comme facultatif. |
- | Masqué | Masque l’@ingrédient dans la liste de courses générée. |
* | % du Boulanger | Marque l’@ingrédient comme référence (100 %) pour calculer les pourcentages du boulanger. |
Les modificateurs optionnel et masqué (?, -)
Section intitulée « Les modificateurs optionnel et masqué (?, -) »Utilisez ? pour estampiller un @ingrédient comme facultatif (idéal pour une garniture que le cuisinier peut choisir d’ignorer). Utilisez - pour masquer délibérément un @ingrédient de la liste de courses (pratique pour les denrées que l’on a toujours dans ses placards, comme l’eau ou le poivre).
Le modificateur de référence (&)
Section intitulée « Le modificateur de référence (&) »Le modificateur de référence est essentiel pour les recettes multi-étapes. Règle clé : à chaque fois que vous citez un @ingrédient après sa déclaration initiale, vous devez utiliser le modificateur &.
Le comportement du compilateur change selon que vous indiquez ou non une nouvelle quantité avec votre référence :
- Référence Pure (Sans Quantité)
Lorsque vous demandez à l’utilisateur d’utiliser un
@ingrédientdéjà déclaré, utilisez@&pour éviter qu’il ne soit compté deux fois dans la liste de courses.
- Référence Additive (Avec Quantité)
Parfois, il arrive de piocher plusieurs fois dans le même
@ingrédienttout au long de la recette. La syntaxe@&ingrédient{quantité}chuchote au compilateur : “C’est bien le même@ingrédient, merci d’additionner cette nouvelle quantité au total de la liste de courses.”
Pourcentage du boulanger (*)
Section intitulée « Pourcentage du boulanger (*) »En boulangerie, les recettes sont souvent construites autour du Pourcentage du Boulanger, où l’@ingrédient principal (généralement la farine) représente 100 %, et tous les autres éléments sont exprimés en pourcentage de ce poids.
Gram fournit un modificateur dédié pour marquer l’@ingrédient de référence. En plaçant un * après le symbole @, vous indiquez au Compilateur Gram : “Ceci est le point de référence à 100 %”.
Cela permet aux outils (comme le CLI ou les interfaces web) de calculer et d’afficher automatiquement les pourcentages du boulanger pour tous les autres éléments (ex : Eau : 70 %, Sel : 2 %) sans que vous n’ayez à les définir manuellement comme quantités relatives.
Syntaxe avancée
Section intitulée « Syntaxe avancée »Préparations courtes
Section intitulée « Préparations courtes »Souvent, un @ingrédient nécessite une préparation avant utilisation. Vous pouvez définir cela directement dans la déclaration à l’aide de parenthèses ().
Alias de composant (renommage)
Section intitulée « Alias de composant (renommage) »Vous pouvez surcharger le nom d’affichage d’un @ingrédient en utilisant les deux-points : juste après son nom d’origine. C’est une excellente pratique pour conserver une liste de courses rigoureuse tout en employant un libellé plus naturel dans les instructions.
Format : @Vrai Nom:Nom d'Affichage{Quantité}
La liste de courses fera l’agrégation sous “vin blanc sec”, mais la recette affichée indiquera simplement “vin”.
Alternatives (substitutions)
Section intitulée « Alternatives (substitutions) »Vous pouvez définir des alternatives acceptables pour un @ingrédient en utilisant l’opérateur pipe |.
Cela fonctionne également avec les préparations courtes :
Plages (intervalles)
Section intitulée « Plages (intervalles) »La cuisine n’est pas toujours une science exacte. Vous pouvez spécifier une fourchette (plage de valeurs) grâce au trait d’union -.
Fractions
Section intitulée « Fractions »Les quantités acceptent les fractions sous trois formes — fraction simple, nombre mixte, ou glyphe de fraction Unicode — toutes normalisées vers la même valeur décimale.
Gestion des erreurs
Section intitulée « Gestion des erreurs »Le compilateur vérifie les erreurs sémantiques dans vos déclarations d’@ingrédient et produira des avertissements spécifiques :
- Modificateur Invalide : Si vous combinez des modificateurs incompatibles (comme
?*), le compilateur avertitINVALID_MODIFIER_COMBINATIONet les ignore. - Référence Non Définie : Si vous utilisez une référence (
@&ingrédient) mais que cet élément n’a pas été déclaré précédemment dans la recette, le compilateur avertitUNDEFINED_REFERENCE. - Base de Données Manquante : Si vous compilez avec une base de données et que l’
@ingrédientest introuvable, il avertitMISSING_INGREDIENT. - Macros Manquants : Si la base de données ne contient pas d’informations nutritionnelles pour l’
@ingrédient, il avertitMISSING_MACROS. - Masse Inconnue : S’il ne peut pas convertir un volume ou une unité en grammes pour estimer la nutrition, il avertit
UNKNOWN_MASS.