Structure du Document
Un fichier de recette Gram (.gram) est structuré en plusieurs parties distinctes : Métadonnées, Sections, Étapes et Commentaires.
1. Métadonnées (Frontmatter)
Le frontmatter est un bloc YAML tout au début du fichier, délimité par ---.
L'analyseur Gram accepte n'importe quelle paire clé-valeur dans ce bloc. Vous pouvez ajouter des champs personnalisés pour les besoins de votre propre application. Cependant, le compilateur Gram reconnaît deux types de clés : Fonctionnelles et Informatives.
Clés Fonctionnelles
Ces clés modifient directement la façon dont le compilateur Gram traite la recette :
portions: (Entier) Le nombre de portions de base. Utilisé comme référence pour l'Estimation Nutritionnelle.densities: (Objet) Surcharges personnalisées de la densité pour des@ingrédientsspécifiques, utilisées par l'algorithme de Standardisation des Masses.
Clés Informatives
Ces clés sont recommandées pour un affichage correct et une bonne gestion des métadonnées :
title: Le nom de la recette.description: Un court résumé (utile pour les balises méta SEO).tags: Une liste de catégories ou mots-clés.category: La catégorie principale (ex : "Dessert", "Plat Principal").author: Nom ou liste d'auteurs.source: URL(s) vers la recette d'origine.date,lastUpdated: AAAA-MM-JJ.makes: Le résultat physique ou les dimensions de la recette (ex : "1 gâteau", "24 cookies", "moule de 20x20 cm").notes: Des notes générales sur la recette (ex : "Testé le 07/06/2026. Réduire le sucre la prochaine fois.").
---
title: 'Brownies au Matcha'
description: 'Un simple brownie au matcha de style japonais...'
author: ["Auguste Kerflec"]
tags: ['brownie', 'matcha']
category: 'Dessert'
source: ['https://example.com/matcha-brownie']
makes: 'moule de 20x20 cm'
# Champs Fonctionnels
portions: 4
densities:
- farine: 0.55
---2. Étapes
Chaque paragraphe dans un fichier Gram représente une seule étape de préparation. Les étapes sont séparées par une ou plusieurs lignes vides.
Une étape,
la même étape.
Une étape différente.Verbes d'Action
Les étapes peuvent optionnellement commencer par une Action entre crochets []. Cela met en évidence la méthode principale utilisée dans cette étape, ce qui la rend facile à analyser visuellement ou programmatiquement.
[Mélanger] La @farine et l'@eau.
[Cuire] Dans le #four pendant ~{30 min}.3. Sections
Les recettes complexes comportent souvent plusieurs composants (ex : pâte, garniture, glaçage) qui sont préparés séparément. Vous pouvez regrouper les étapes dans des blocs ## Section en utilisant des titres de style Markdown (ex : ## Pâte).
## Pâte
Mélanger la @farine{200 g} et l'@eau{100 ml} jusqu'à obtenir un mélange lisse.
## Garniture
Combiner le @fromage{100 g} et les @épinards{50 g}, puis assaisonner selon le goût.Rétroplanning (Ordonnancement)
Vous pouvez assigner un délai de préparation à une ## Section en ajoutant un ~minuteur n'importe où dans le titre.
## Pâte Feuilletée ~{-2d}Cela indique au compilateur que la section "Pâte Feuilletée" doit être préparée 2 jours à l'avance. Les suffixes supportés sont d (jours), h (heures), min ou m (minutes).
Sorties de Section (Déclarations)
Si une ## Section produit un sous-composant qui sera utilisé plus tard dans la recette, vous pouvez le déclarer avec ->& à la fin du titre.
## Pâte Feuilletée ->&pâteVoir les Variables Intermédiaires pour plus de détails.
4. Commentaires
Vous pouvez ajouter des commentaires pour expliquer des instructions sans affecter le résultat compilé.
Commentaires en ligne (//) :
Écraser les @pommes de terre{2 kg} jusqu'à obtenir une purée lisse // sinon, vous pouvez les faire bouillir avant.Commentaires en bloc (/* ... */) :
Ajouter doucement le @lait{4 tasses} /* TODO changer les unités en litres */, et continuer à mélanger.Commentaires vs Notes YAML
Les commentaires sont préservés lors de la compilation et sont affichés à côté des instructions (généralement en gris italique). Ils sont parfaits pour de petites astuces spécifiques à une étape. Cependant, si vous avez des observations globales ou des retours généraux sur la recette (ex : "Réduire le sucre la prochaine fois", "Meilleur servi froid"), il est recommandé de les placer dans le Frontmatter YAML sous la clé notes pour qu'ils soient affichés de manière bien visible en haut de la page.