Initial CookieCode MVP

This commit is contained in:
2026-07-21 22:12:43 +02:00
commit 5a388d3d60
10 changed files with 1266 additions and 0 deletions
+137
View File
@@ -0,0 +1,137 @@
# CookieCode
CookieCode est une microlibrairie JavaScript educative pour apprendre les bases de l'algorithmique avec des recettes de cuisine.
L'idee :
| Cuisine | Programmation |
| --- | --- |
| Recette | Programme |
| Ingredients | Variables |
| Materiel | Constantes / ressources |
| Etapes | Instructions |
| Actions culinaires | Fonctions |
| `si` | Condition |
| `repeter` | Boucle |
## Objectif du MVP
- fonctionner directement dans une page HTML via une balise `<script>` ;
- exposer une variable globale `CookieCode` ;
- proposer une API chainable proche du langage naturel ;
- afficher une trace de recette et une lecture algorithmique ;
- rester sans dependance.
## Utilisation dans une page
```html
<div id="app"></div>
<script src="dist/cookiecode.js"></script>
<script>
CookieCode.configurer({
sortie: "#app",
afficherNotions: true
});
CookieCode.recette("Cookie au chocolat")
.prendre("farine", 200, "g")
.prendre("sucre", 100, "g")
.prendre("chocolat", 150, "g")
.utiliser("saladier")
.ajouter("farine")
.ajouter("sucre")
.ajouter("chocolat")
.melanger()
.repeter(2, function (recette) {
recette.melanger();
})
.cuire(12, "minutes")
.servir();
</script>
```
## API principale
### Creation
```js
CookieCode.recette("Cookies");
CookieCode.ingredient("farine", 200, "g");
CookieCode.materiel("saladier");
CookieCode.constante("temperature", 180);
CookieCode.preparation("pate");
```
### Methodes d'une recette
```js
.prendre(nom, quantite, unite)
.utiliser(materiel)
.ajouter(element, quantite, unite)
.retirer(element)
.couper(element, forme)
.melanger()
.verser(contenu, contenant)
.chauffer(element, temperature)
.cuire(duree, unite)
.attendre(duree, unite)
.repeter(nombre, action)
.si(condition, action, sinonAction)
.servir(element)
.afficher()
.toText()
.toHTML()
```
## Exemple avec variables
```js
const farine = CookieCode.ingredient("farine", 200, "g");
const sucre = CookieCode.ingredient("sucre", 100, "g");
const saladier = CookieCode.materiel("saladier");
const recette = CookieCode.recette("Cookies")
.utiliser(saladier)
.ajouter(farine)
.ajouter(sucre)
.melanger();
console.log(recette.toText());
```
## Exemple avec boucle et condition
```js
const pate = CookieCode.preparation("pate").definir("texture", "trop seche");
CookieCode.recette("Pate a cookies")
.ajouter("farine", 200, "g")
.si(function () {
return pate.est("trop seche");
}, function (recette) {
recette.ajouter("lait", 20, "ml");
})
.repeter(3, function (recette) {
recette.melanger();
})
.servir();
```
## Cartes pedagogiques conseillees
| Type de carte | Mots cles | Notion |
| --- | --- | --- |
| Structure | `recette`, `servir` | programme / resultat |
| Donnee | `ingredient`, `quantite`, `unite` | variable / valeur |
| Materiel | `materiel`, `utiliser` | constante / ressource |
| Action | `prendre`, `ajouter`, `couper`, `melanger`, `cuire` | fonction |
| Logique | `si`, `sinon`, `repeter` | condition / boucle |
## Developpement
```sh
npm test
npm run build
```
Aucune dependance n'est necessaire pour lancer les tests du MVP.