]> OzVa Git service - bread/commitdiff
Built recipe helper
authorMax Value <greenwoodw50@gmail.com>
Sun, 18 Jan 2026 00:02:51 +0000 (00:02 +0000)
committerMax Value <greenwoodw50@gmail.com>
Sun, 18 Jan 2026 00:02:51 +0000 (00:02 +0000)
Makefile
helper.py [new file with mode: 0644]
index.gmi
index.html

index 8b0573acf9c64326136c92643f0aa6b5d1270b53..758b4742e62051ad5c6c5930c74d62701027321f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,9 @@ all : .venv/touchfile
        -mkdir recipes
        .venv/bin/python sous.py
 
+helper : .venv/touchfile
+       .venv/bin/python helper.py
+
 .venv/touchfile : requirements.txt
        python3 -m venv .venv
        .venv/bin/python -m pip install -r requirements.txt
diff --git a/helper.py b/helper.py
new file mode 100644 (file)
index 0000000..369a1d5
--- /dev/null
+++ b/helper.py
@@ -0,0 +1,189 @@
+HELP = """
+(c) Will Greenwood 2025
+
+For converting over bread recipies with different and volumetric units.
+
+You are asked to give the ingredients of the recipe line by line, and from this
+the bakers percentage will be calculated. There are some additional commands:
+
+       "reset" - clears the history
+       "generate" - generates the toml code for the recipe page
+       "help" - prints this help text
+
+The syntax for an ingredient is the following:
+
+       <number> <unit> of <ingredient> <optional: "base">
+
+- The number may be a decimal
+- The unit should always be plural if not in shorthand ("pounds" not "pound")
+- the ingredient should be formatted as in the toml, with no spaces
+- "base" includes the ingredient as the 100% that makes up the flour usually
+
+It can the following units:
+
+       g, grams
+       kg, kilograms
+       l, litres
+       lb, pounds
+       oz, ounces
+       tsp, teaspoons
+       tbsp, tablespoons
+       cups
+       pints
+       gallons
+       quarts
+       large-eggs
+       eggs, medium-eggs
+       small-eggs
+
+And the following materials
+
+       wholemeal-flour
+       white-flour
+       rye-flour
+       water
+       yeast
+       milk
+       sugar
+       butter
+       salt
+       yougurt
+       egg
+"""
+
+# CONSTANTS
+
+VOLUMETRIC = { # this converts the units into ml of water
+       "tsp": 4.929,
+       "teaspoons": 4.929,
+       "tbsp": 14.79,
+       "tablespoons": 14.79,
+       "cups": 236.6,
+       "pints": 473.2,
+       "gallons": 3785,
+       "quarts": 946.4
+       }
+
+WEIGHTED = {
+       "g": 1,
+       "grams": 1,
+       "kg": 1000,
+       "kilograms": 1000,
+       "l": 1000,
+       "litres": 1000,
+       "lb": 453.6,
+       "pounds": 453.6,
+       "oz": 28.35,
+       "ounces": 28.35,
+       "large-eggs": 68,
+       "medium-eggs": 58,
+       "eggs": 58,
+       "small-eggs": 50
+       }
+
+INGREDIENTS = { # this converts ml to g (fallback is 1:1)
+       "water": 1,
+       "milk": 1.035,
+       "wholemeal-flour": 0.478,
+       "flour": 0.55,
+       "white-flour": 0.55,
+       "rye-flour": 0.478,
+       "egg": 1.04,
+       "yeast": 0.95,
+       "yougurt": 1.06,
+       "salt": 1.201,
+       "potato": 0.769,
+       "butter": 0.959,
+       "olive-oil": 0.92,
+       "oil": 0.92,
+       "sugar": 0.849,
+       "brown-sugar": 0.823,
+       "syrup": 1.43,
+       "honey": 1.42,
+       "seeds": 0.62
+       }
+
+ingredients = []
+base_ingredients = []
+
+while True:
+       try:
+               line = input("ingredient > ")
+       except KeyboardInterrupt:
+               print("\nHappy baking!")
+               quit()
+
+       # if the user has inputted a commands
+       if len(line.split()) == 1:
+               if line == "reset": # reset function
+                       ingredients = []
+                       base_ingredients = []
+                       continue
+
+               elif line == "help": # reset function
+                       print(HELP)
+                       continue
+
+               elif line == "generate": # generate the recipe
+                       if len(base_ingredients) == 0:
+                               print(f"Cannot generate, no base ingredients")
+                               continue
+
+                       base_total = sum([i["units"] for i in base_ingredients])
+
+                       all_ingredients = base_ingredients + ingredients
+                       for i in all_ingredients:
+                               i["units"] = i["units"] * (100/base_total)
+                               if i["units"] > 20:
+                                       i["units"] = round(i["units"])
+                               else:
+                                       i["units"] = round(i["units"], 2)
+
+                       all_ingredients.sort(key=lambda i: i["units"], reverse=True)
+                       for i in all_ingredients:
+                               print(f"{i['name']} = {i['units']}")
+                       continue
+
+               else: # if the command is not valid...
+                       print(f"Incorrect syntax")
+                       continue
+
+       # if the user has entered a non-base ingredient:
+       if len(line.split()) == 4:
+               qty, measure, _, ingredient = line.split()
+               base = False
+
+       # if the user has entered a base ingredient:
+       elif len(line.split()) == 5:
+               qty, measure, _, ingredient, base = line.split()
+               if base != "base": # check that this is not a mistake
+                       print(f"Incorrect syntax '{base}'")
+                       continue
+               base = True
+
+       else: # if the user has made a mistake with the entry
+               print("Incorrect syntax")
+               continue
+
+       if measure not in WEIGHTED and measure not in VOLUMETRIC:
+               # if the unit has been misspelled
+               print(f"No record for '{measure}' as a unit")
+               continue
+
+       # calculate the g of water in this case and multiply by the density
+       if measure in WEIGHTED:
+               g = float(qty) * WEIGHTED[measure]
+
+       if measure in VOLUMETRIC:
+               g = float(qty) * VOLUMETRIC[measure]
+               if ingredient in INGREDIENTS:
+                       g *= INGREDIENTS[ingredient]
+               else: # if the ingredient is not recorded
+                       print(f"'{ingredient}' not found, using 1 g <-> 1 ml")
+
+       # add to the list
+       record = {"units": g, "name": ingredient}
+       if base:
+               base_ingredients.append(record)
+       else:
+               ingredients.append(record)
index d69d37ac3ef02c88212d57671356a800e29325d7..b107533813e23769cc0148d5b2319a7d8f298e36 100644 (file)
--- a/index.gmi
+++ b/index.gmi
@@ -26,75 +26,78 @@ In many of these recipes, the salt measurement is a constant 1.5%. This is perso
 
 ### All recipes
 
+=> recipes/calvel-imitation-panettone.gmi      Panettone Imitation (Imitation Panettone from 'Taste of Bread'.)
 => recipes/calvel-pain-au-levain.gmi   Pain Au Levain (Pain Au Levain recipe from 'Taste of Bread'.)
 => recipes/kaiser-rolls-vegan.gmi      Kaiser rolls (vegan) (Under development.)
-=> recipes/levain-de-pate-wholemeal.gmi        Levain De Pâte (wholemeal) (Levain De Pâte ajusted for cheap chapatti flour. Under development.)
 => recipes/kaiser-rolls.gmi    Kaiser rolls (Chainbaker kaiser rolls.)
-=> recipes/levain-de-pate.gmi  Levain De Pâte (Levain De Pate recipe from 'Taste of Bread'.)
 => recipes/polish-white-v4.gmi White yeasted with polish pre-ferment v4 (Less acidic flavor than the v4 sourdough.)
 => recipes/sourdough-white-v4.gmi      Sourdough white v4 (Sourdough sandwich loaf, similar to french bread.)
-=> recipes/challah.gmi Challah (Jewish sweet-bread.)
-=> recipes/challah-polish.gmi  Challah with pre-ferment (Jewish sweet-bread with polish.)
+=> recipes/calvel-levain-de-pate.gmi   Levain De Pâte (Levain De Pate recipe from 'Taste of Bread'.)
+=> recipes/challah.gmi Challah (Polish sweet-bread.)
+=> recipes/challah-polish.gmi  Challah with pre-ferment (Polish sweet-bread with polish.)
 => recipes/calvel-polish.gmi   Polish pre-ferment (Recommended polish recipe from 'Taste of Bread'.)
 => recipes/seeded-rye.gmi      Seeded Sourdough Rye (Sourdough rye with seeds. Can be used as a guide for other seeded breads.)
 => recipes/straight-white-v4.gmi       Straight white yeasted v4 (Regular white yeasted bread.)
-=> recipes/panettone-imitation.gmi     Panettone Imitation (Imitation Panettone from 'Taste of Bread'.)
 => recipes/panettone-v3.gmi    Panettone v3 (Panettone.)
 => recipes/ciabatta-polish.gmi Ciabatta with pre-ferment (Light Italian bread with polish.)
+=> recipes/floris-polish-rye.gmi       Polish rye bread (Polish rye bread from Maria Floris' 'Bakery, cakes and simple confectionery')
+=> recipes/calvel-levain-de-pate-wholemeal.gmi Levain De Pâte (wholemeal) (Levain De Pâte ajusted for cheap chapatti flour. Under development.)
 => recipes/ciabatta.gmi        Ciabatta (Light Italian bread.)
 
 
 ### Keywords
 
-Sourdough
-
-=> recipes/calvel-pain-au-levain.gmi   Pain Au Levain (Pain Au Levain recipe from 'Taste of Bread'.)
-=> recipes/levain-de-pate-wholemeal.gmi        Levain De Pâte (wholemeal) (Levain De Pâte ajusted for cheap chapatti flour. Under development.)
-=> recipes/levain-de-pate.gmi  Levain De Pâte (Levain De Pate recipe from 'Taste of Bread'.)
-=> recipes/sourdough-white-v4.gmi      Sourdough white v4 (Sourdough sandwich loaf, similar to french bread.)
-=> recipes/seeded-rye.gmi      Seeded Sourdough Rye (Sourdough rye with seeds. Can be used as a guide for other seeded breads.)
-=> recipes/panettone-imitation.gmi     Panettone Imitation (Imitation Panettone from 'Taste of Bread'.)
-=> recipes/panettone-v3.gmi    Panettone v3 (Panettone.)
-
 White
 
+=> recipes/calvel-imitation-panettone.gmi      Panettone Imitation (Imitation Panettone from 'Taste of Bread'.)
 => recipes/calvel-pain-au-levain.gmi   Pain Au Levain (Pain Au Levain recipe from 'Taste of Bread'.)
 => recipes/kaiser-rolls-vegan.gmi      Kaiser rolls (vegan) (Under development.)
 => recipes/kaiser-rolls.gmi    Kaiser rolls (Chainbaker kaiser rolls.)
-=> recipes/levain-de-pate.gmi  Levain De Pâte (Levain De Pate recipe from 'Taste of Bread'.)
 => recipes/polish-white-v4.gmi White yeasted with polish pre-ferment v4 (Less acidic flavor than the v4 sourdough.)
 => recipes/sourdough-white-v4.gmi      Sourdough white v4 (Sourdough sandwich loaf, similar to french bread.)
-=> recipes/challah.gmi Challah (Jewish sweet-bread.)
-=> recipes/challah-polish.gmi  Challah with pre-ferment (Jewish sweet-bread with polish.)
+=> recipes/calvel-levain-de-pate.gmi   Levain De Pâte (Levain De Pate recipe from 'Taste of Bread'.)
+=> recipes/challah.gmi Challah (Polish sweet-bread.)
+=> recipes/challah-polish.gmi  Challah with pre-ferment (Polish sweet-bread with polish.)
 => recipes/straight-white-v4.gmi       Straight white yeasted v4 (Regular white yeasted bread.)
-=> recipes/panettone-imitation.gmi     Panettone Imitation (Imitation Panettone from 'Taste of Bread'.)
 => recipes/panettone-v3.gmi    Panettone v3 (Panettone.)
 => recipes/ciabatta-polish.gmi Ciabatta with pre-ferment (Light Italian bread with polish.)
 => recipes/ciabatta.gmi        Ciabatta (Light Italian bread.)
 
+Sourdough
+
+=> recipes/calvel-imitation-panettone.gmi      Panettone Imitation (Imitation Panettone from 'Taste of Bread'.)
+=> recipes/calvel-pain-au-levain.gmi   Pain Au Levain (Pain Au Levain recipe from 'Taste of Bread'.)
+=> recipes/sourdough-white-v4.gmi      Sourdough white v4 (Sourdough sandwich loaf, similar to french bread.)
+=> recipes/calvel-levain-de-pate.gmi   Levain De Pâte (Levain De Pate recipe from 'Taste of Bread'.)
+=> recipes/seeded-rye.gmi      Seeded Sourdough Rye (Sourdough rye with seeds. Can be used as a guide for other seeded breads.)
+=> recipes/panettone-v3.gmi    Panettone v3 (Panettone.)
+=> recipes/floris-polish-rye.gmi       Polish rye bread (Polish rye bread from Maria Floris' 'Bakery, cakes and simple confectionery')
+=> recipes/calvel-levain-de-pate-wholemeal.gmi Levain De Pâte (wholemeal) (Levain De Pâte ajusted for cheap chapatti flour. Under development.)
+
 Vegan
 
 => recipes/calvel-pain-au-levain.gmi   Pain Au Levain (Pain Au Levain recipe from 'Taste of Bread'.)
 => recipes/kaiser-rolls-vegan.gmi      Kaiser rolls (vegan) (Under development.)
-=> recipes/levain-de-pate-wholemeal.gmi        Levain De Pâte (wholemeal) (Levain De Pâte ajusted for cheap chapatti flour. Under development.)
-=> recipes/levain-de-pate.gmi  Levain De Pâte (Levain De Pate recipe from 'Taste of Bread'.)
 => recipes/polish-white-v4.gmi White yeasted with polish pre-ferment v4 (Less acidic flavor than the v4 sourdough.)
 => recipes/sourdough-white-v4.gmi      Sourdough white v4 (Sourdough sandwich loaf, similar to french bread.)
+=> recipes/calvel-levain-de-pate.gmi   Levain De Pâte (Levain De Pate recipe from 'Taste of Bread'.)
 => recipes/straight-white-v4.gmi       Straight white yeasted v4 (Regular white yeasted bread.)
 => recipes/ciabatta-polish.gmi Ciabatta with pre-ferment (Light Italian bread with polish.)
+=> recipes/calvel-levain-de-pate-wholemeal.gmi Levain De Pâte (wholemeal) (Levain De Pâte ajusted for cheap chapatti flour. Under development.)
 => recipes/ciabatta.gmi        Ciabatta (Light Italian bread.)
 
 Yeasted
 
 => recipes/kaiser-rolls-vegan.gmi      Kaiser rolls (vegan) (Under development.)
-=> recipes/levain-de-pate-wholemeal.gmi        Levain De Pâte (wholemeal) (Levain De Pâte ajusted for cheap chapatti flour. Under development.)
 => recipes/kaiser-rolls.gmi    Kaiser rolls (Chainbaker kaiser rolls.)
-=> recipes/levain-de-pate.gmi  Levain De Pâte (Levain De Pate recipe from 'Taste of Bread'.)
-=> recipes/challah.gmi Challah (Jewish sweet-bread.)
-=> recipes/challah-polish.gmi  Challah with pre-ferment (Jewish sweet-bread with polish.)
+=> recipes/calvel-levain-de-pate.gmi   Levain De Pâte (Levain De Pate recipe from 'Taste of Bread'.)
+=> recipes/challah.gmi Challah (Polish sweet-bread.)
+=> recipes/challah-polish.gmi  Challah with pre-ferment (Polish sweet-bread with polish.)
 => recipes/seeded-rye.gmi      Seeded Sourdough Rye (Sourdough rye with seeds. Can be used as a guide for other seeded breads.)
 => recipes/straight-white-v4.gmi       Straight white yeasted v4 (Regular white yeasted bread.)
 => recipes/ciabatta-polish.gmi Ciabatta with pre-ferment (Light Italian bread with polish.)
+=> recipes/floris-polish-rye.gmi       Polish rye bread (Polish rye bread from Maria Floris' 'Bakery, cakes and simple confectionery')
+=> recipes/calvel-levain-de-pate-wholemeal.gmi Levain De Pâte (wholemeal) (Levain De Pâte ajusted for cheap chapatti flour. Under development.)
 => recipes/ciabatta.gmi        Ciabatta (Light Italian bread.)
 
 Brioche
@@ -102,21 +105,26 @@ Brioche
 => recipes/kaiser-rolls-vegan.gmi      Kaiser rolls (vegan) (Under development.)
 => recipes/kaiser-rolls.gmi    Kaiser rolls (Chainbaker kaiser rolls.)
 
-Wholemeal
-
-=> recipes/levain-de-pate-wholemeal.gmi        Levain De Pâte (wholemeal) (Levain De Pâte ajusted for cheap chapatti flour. Under development.)
-
 Pre-Ferment
 
 => recipes/polish-white-v4.gmi White yeasted with polish pre-ferment v4 (Less acidic flavor than the v4 sourdough.)
-=> recipes/challah-polish.gmi  Challah with pre-ferment (Jewish sweet-bread with polish.)
+=> recipes/challah-polish.gmi  Challah with pre-ferment (Polish sweet-bread with polish.)
 => recipes/calvel-polish.gmi   Polish pre-ferment (Recommended polish recipe from 'Taste of Bread'.)
 => recipes/ciabatta-polish.gmi Ciabatta with pre-ferment (Light Italian bread with polish.)
 
 Rye
 
 => recipes/seeded-rye.gmi      Seeded Sourdough Rye (Sourdough rye with seeds. Can be used as a guide for other seeded breads.)
+=> recipes/floris-polish-rye.gmi       Polish rye bread (Polish rye bread from Maria Floris' 'Bakery, cakes and simple confectionery')
+
+Floris
+
+=> recipes/floris-polish-rye.gmi       Polish rye bread (Polish rye bread from Maria Floris' 'Bakery, cakes and simple confectionery')
+
+Wholemeal
+
+=> recipes/calvel-levain-de-pate-wholemeal.gmi Levain De Pâte (wholemeal) (Levain De Pâte ajusted for cheap chapatti flour. Under development.)
 
 
 
-=> https://git.ozva.co.uk/?p=bread;a=commit;h=HEAD     Last compiled at 2025-08-30 17:28:14.092317
\ No newline at end of file
+=> https://git.ozva.co.uk/?p=bread;a=commit;h=HEAD     Last compiled at 2026-01-17 22:37:14.182681
\ No newline at end of file
index 9bf9cf59e822eac746674722dc0f24bc1709f9cb..e0d2b6e8e627a70eeef6f7fd9764aca13424cce2 100644 (file)
                <h3>All recipes</h3>
                <ul>
                        
+                               <li><a href="recipes/calvel-imitation-panettone.html">Panettone Imitation</a> <em>Imitation Panettone from 'Taste of Bread'.</em></li>
+                       
                                <li><a href="recipes/calvel-pain-au-levain.html">Pain Au Levain</a> <em>Pain Au Levain recipe from 'Taste of Bread'.</em></li>
                        
                                <li><a href="recipes/kaiser-rolls-vegan.html">Kaiser rolls (vegan)</a> <em>Under development.</em></li>
                        
-                               <li><a href="recipes/levain-de-pate-wholemeal.html">Levain De Pâte (wholemeal)</a> <em>Levain De Pâte ajusted for cheap chapatti flour. Under development.</em></li>
-                       
                                <li><a href="recipes/kaiser-rolls.html">Kaiser rolls</a> <em>Chainbaker kaiser rolls.</em></li>
                        
-                               <li><a href="recipes/levain-de-pate.html">Levain De Pâte</a> <em>Levain De Pate recipe from 'Taste of Bread'.</em></li>
-                       
                                <li><a href="recipes/polish-white-v4.html">White yeasted with polish pre-ferment v4</a> <em>Less acidic flavor than the v4 sourdough.</em></li>
                        
                                <li><a href="recipes/sourdough-white-v4.html">Sourdough white v4</a> <em>Sourdough sandwich loaf, similar to french bread.</em></li>
                        
-                               <li><a href="recipes/challah.html">Challah</a> <em>Jewish sweet-bread.</em></li>
+                               <li><a href="recipes/calvel-levain-de-pate.html">Levain De Pâte</a> <em>Levain De Pate recipe from 'Taste of Bread'.</em></li>
+                       
+                               <li><a href="recipes/challah.html">Challah</a> <em>Polish sweet-bread.</em></li>
                        
-                               <li><a href="recipes/challah-polish.html">Challah with pre-ferment</a> <em>Jewish sweet-bread with polish.</em></li>
+                               <li><a href="recipes/challah-polish.html">Challah with pre-ferment</a> <em>Polish sweet-bread with polish.</em></li>
                        
                                <li><a href="recipes/calvel-polish.html">Polish pre-ferment</a> <em>Recommended polish recipe from 'Taste of Bread'.</em></li>
                        
                        
                                <li><a href="recipes/straight-white-v4.html">Straight white yeasted v4</a> <em>Regular white yeasted bread.</em></li>
                        
-                               <li><a href="recipes/panettone-imitation.html">Panettone Imitation</a> <em>Imitation Panettone from 'Taste of Bread'.</em></li>
-                       
                                <li><a href="recipes/panettone-v3.html">Panettone v3</a> <em>Panettone.</em></li>
                        
                                <li><a href="recipes/ciabatta-polish.html">Ciabatta with pre-ferment</a> <em>Light Italian bread with polish.</em></li>
                        
+                               <li><a href="recipes/floris-polish-rye.html">Polish rye bread</a> <em>Polish rye bread from Maria Floris' 'Bakery, cakes and simple confectionery'</em></li>
+                       
+                               <li><a href="recipes/calvel-levain-de-pate-wholemeal.html">Levain De Pâte (wholemeal)</a> <em>Levain De Pâte ajusted for cheap chapatti flour. Under development.</em></li>
+                       
                                <li><a href="recipes/ciabatta.html">Ciabatta</a> <em>Light Italian bread.</em></li>
                        
                </ul>
                <h3>Keywords</h3>
                
-                       <h4>Sourdough</h4>
+                       <h4>White</h4>
                        <ul>
                        
+                               <li><a href="recipes/calvel-imitation-panettone.html">Panettone Imitation</a> <em>Imitation Panettone from 'Taste of Bread'.</em></li>
+                       
                                <li><a href="recipes/calvel-pain-au-levain.html">Pain Au Levain</a> <em>Pain Au Levain recipe from 'Taste of Bread'.</em></li>
                        
-                               <li><a href="recipes/levain-de-pate-wholemeal.html">Levain De Pâte (wholemeal)</a> <em>Levain De Pâte ajusted for cheap chapatti flour. Under development.</em></li>
+                               <li><a href="recipes/kaiser-rolls-vegan.html">Kaiser rolls (vegan)</a> <em>Under development.</em></li>
+                       
+                               <li><a href="recipes/kaiser-rolls.html">Kaiser rolls</a> <em>Chainbaker kaiser rolls.</em></li>
                        
-                               <li><a href="recipes/levain-de-pate.html">Levain De Pâte</a> <em>Levain De Pate recipe from 'Taste of Bread'.</em></li>
+                               <li><a href="recipes/polish-white-v4.html">White yeasted with polish pre-ferment v4</a> <em>Less acidic flavor than the v4 sourdough.</em></li>
                        
                                <li><a href="recipes/sourdough-white-v4.html">Sourdough white v4</a> <em>Sourdough sandwich loaf, similar to french bread.</em></li>
                        
-                               <li><a href="recipes/seeded-rye.html">Seeded Sourdough Rye</a> <em>Sourdough rye with seeds. Can be used as a guide for other seeded breads.</em></li>
+                               <li><a href="recipes/calvel-levain-de-pate.html">Levain De Pâte</a> <em>Levain De Pate recipe from 'Taste of Bread'.</em></li>
+                       
+                               <li><a href="recipes/challah.html">Challah</a> <em>Polish sweet-bread.</em></li>
                        
-                               <li><a href="recipes/panettone-imitation.html">Panettone Imitation</a> <em>Imitation Panettone from 'Taste of Bread'.</em></li>
+                               <li><a href="recipes/challah-polish.html">Challah with pre-ferment</a> <em>Polish sweet-bread with polish.</em></li>
+                       
+                               <li><a href="recipes/straight-white-v4.html">Straight white yeasted v4</a> <em>Regular white yeasted bread.</em></li>
                        
                                <li><a href="recipes/panettone-v3.html">Panettone v3</a> <em>Panettone.</em></li>
                        
+                               <li><a href="recipes/ciabatta-polish.html">Ciabatta with pre-ferment</a> <em>Light Italian bread with polish.</em></li>
+                       
+                               <li><a href="recipes/ciabatta.html">Ciabatta</a> <em>Light Italian bread.</em></li>
+                       
                        </ul>
                
-                       <h4>White</h4>
+                       <h4>Sourdough</h4>
                        <ul>
                        
-                               <li><a href="recipes/calvel-pain-au-levain.html">Pain Au Levain</a> <em>Pain Au Levain recipe from 'Taste of Bread'.</em></li>
-                       
-                               <li><a href="recipes/kaiser-rolls-vegan.html">Kaiser rolls (vegan)</a> <em>Under development.</em></li>
-                       
-                               <li><a href="recipes/kaiser-rolls.html">Kaiser rolls</a> <em>Chainbaker kaiser rolls.</em></li>
-                       
-                               <li><a href="recipes/levain-de-pate.html">Levain De Pâte</a> <em>Levain De Pate recipe from 'Taste of Bread'.</em></li>
+                               <li><a href="recipes/calvel-imitation-panettone.html">Panettone Imitation</a> <em>Imitation Panettone from 'Taste of Bread'.</em></li>
                        
-                               <li><a href="recipes/polish-white-v4.html">White yeasted with polish pre-ferment v4</a> <em>Less acidic flavor than the v4 sourdough.</em></li>
+                               <li><a href="recipes/calvel-pain-au-levain.html">Pain Au Levain</a> <em>Pain Au Levain recipe from 'Taste of Bread'.</em></li>
                        
                                <li><a href="recipes/sourdough-white-v4.html">Sourdough white v4</a> <em>Sourdough sandwich loaf, similar to french bread.</em></li>
                        
-                               <li><a href="recipes/challah.html">Challah</a> <em>Jewish sweet-bread.</em></li>
+                               <li><a href="recipes/calvel-levain-de-pate.html">Levain De Pâte</a> <em>Levain De Pate recipe from 'Taste of Bread'.</em></li>
                        
-                               <li><a href="recipes/challah-polish.html">Challah with pre-ferment</a> <em>Jewish sweet-bread with polish.</em></li>
-                       
-                               <li><a href="recipes/straight-white-v4.html">Straight white yeasted v4</a> <em>Regular white yeasted bread.</em></li>
-                       
-                               <li><a href="recipes/panettone-imitation.html">Panettone Imitation</a> <em>Imitation Panettone from 'Taste of Bread'.</em></li>
+                               <li><a href="recipes/seeded-rye.html">Seeded Sourdough Rye</a> <em>Sourdough rye with seeds. Can be used as a guide for other seeded breads.</em></li>
                        
                                <li><a href="recipes/panettone-v3.html">Panettone v3</a> <em>Panettone.</em></li>
                        
-                               <li><a href="recipes/ciabatta-polish.html">Ciabatta with pre-ferment</a> <em>Light Italian bread with polish.</em></li>
+                               <li><a href="recipes/floris-polish-rye.html">Polish rye bread</a> <em>Polish rye bread from Maria Floris' 'Bakery, cakes and simple confectionery'</em></li>
                        
-                               <li><a href="recipes/ciabatta.html">Ciabatta</a> <em>Light Italian bread.</em></li>
+                               <li><a href="recipes/calvel-levain-de-pate-wholemeal.html">Levain De Pâte (wholemeal)</a> <em>Levain De Pâte ajusted for cheap chapatti flour. Under development.</em></li>
                        
                        </ul>
                
                        
                                <li><a href="recipes/kaiser-rolls-vegan.html">Kaiser rolls (vegan)</a> <em>Under development.</em></li>
                        
-                               <li><a href="recipes/levain-de-pate-wholemeal.html">Levain De Pâte (wholemeal)</a> <em>Levain De Pâte ajusted for cheap chapatti flour. Under development.</em></li>
-                       
-                               <li><a href="recipes/levain-de-pate.html">Levain De Pâte</a> <em>Levain De Pate recipe from 'Taste of Bread'.</em></li>
-                       
                                <li><a href="recipes/polish-white-v4.html">White yeasted with polish pre-ferment v4</a> <em>Less acidic flavor than the v4 sourdough.</em></li>
                        
                                <li><a href="recipes/sourdough-white-v4.html">Sourdough white v4</a> <em>Sourdough sandwich loaf, similar to french bread.</em></li>
                        
+                               <li><a href="recipes/calvel-levain-de-pate.html">Levain De Pâte</a> <em>Levain De Pate recipe from 'Taste of Bread'.</em></li>
+                       
                                <li><a href="recipes/straight-white-v4.html">Straight white yeasted v4</a> <em>Regular white yeasted bread.</em></li>
                        
                                <li><a href="recipes/ciabatta-polish.html">Ciabatta with pre-ferment</a> <em>Light Italian bread with polish.</em></li>
                        
+                               <li><a href="recipes/calvel-levain-de-pate-wholemeal.html">Levain De Pâte (wholemeal)</a> <em>Levain De Pâte ajusted for cheap chapatti flour. Under development.</em></li>
+                       
                                <li><a href="recipes/ciabatta.html">Ciabatta</a> <em>Light Italian bread.</em></li>
                        
                        </ul>
                        
                                <li><a href="recipes/kaiser-rolls-vegan.html">Kaiser rolls (vegan)</a> <em>Under development.</em></li>
                        
-                               <li><a href="recipes/levain-de-pate-wholemeal.html">Levain De Pâte (wholemeal)</a> <em>Levain De Pâte ajusted for cheap chapatti flour. Under development.</em></li>
-                       
                                <li><a href="recipes/kaiser-rolls.html">Kaiser rolls</a> <em>Chainbaker kaiser rolls.</em></li>
                        
-                               <li><a href="recipes/levain-de-pate.html">Levain De Pâte</a> <em>Levain De Pate recipe from 'Taste of Bread'.</em></li>
+                               <li><a href="recipes/calvel-levain-de-pate.html">Levain De Pâte</a> <em>Levain De Pate recipe from 'Taste of Bread'.</em></li>
                        
-                               <li><a href="recipes/challah.html">Challah</a> <em>Jewish sweet-bread.</em></li>
+                               <li><a href="recipes/challah.html">Challah</a> <em>Polish sweet-bread.</em></li>
                        
-                               <li><a href="recipes/challah-polish.html">Challah with pre-ferment</a> <em>Jewish sweet-bread with polish.</em></li>
+                               <li><a href="recipes/challah-polish.html">Challah with pre-ferment</a> <em>Polish sweet-bread with polish.</em></li>
                        
                                <li><a href="recipes/seeded-rye.html">Seeded Sourdough Rye</a> <em>Sourdough rye with seeds. Can be used as a guide for other seeded breads.</em></li>
                        
                        
                                <li><a href="recipes/ciabatta-polish.html">Ciabatta with pre-ferment</a> <em>Light Italian bread with polish.</em></li>
                        
+                               <li><a href="recipes/floris-polish-rye.html">Polish rye bread</a> <em>Polish rye bread from Maria Floris' 'Bakery, cakes and simple confectionery'</em></li>
+                       
+                               <li><a href="recipes/calvel-levain-de-pate-wholemeal.html">Levain De Pâte (wholemeal)</a> <em>Levain De Pâte ajusted for cheap chapatti flour. Under development.</em></li>
+                       
                                <li><a href="recipes/ciabatta.html">Ciabatta</a> <em>Light Italian bread.</em></li>
                        
                        </ul>
                        
                        </ul>
                
-                       <h4>Wholemeal</h4>
-                       <ul>
-                       
-                               <li><a href="recipes/levain-de-pate-wholemeal.html">Levain De Pâte (wholemeal)</a> <em>Levain De Pâte ajusted for cheap chapatti flour. Under development.</em></li>
-                       
-                       </ul>
-               
                        <h4>Pre-Ferment</h4>
                        <ul>
                        
                                <li><a href="recipes/polish-white-v4.html">White yeasted with polish pre-ferment v4</a> <em>Less acidic flavor than the v4 sourdough.</em></li>
                        
-                               <li><a href="recipes/challah-polish.html">Challah with pre-ferment</a> <em>Jewish sweet-bread with polish.</em></li>
+                               <li><a href="recipes/challah-polish.html">Challah with pre-ferment</a> <em>Polish sweet-bread with polish.</em></li>
                        
                                <li><a href="recipes/calvel-polish.html">Polish pre-ferment</a> <em>Recommended polish recipe from 'Taste of Bread'.</em></li>
                        
                        
                                <li><a href="recipes/seeded-rye.html">Seeded Sourdough Rye</a> <em>Sourdough rye with seeds. Can be used as a guide for other seeded breads.</em></li>
                        
+                               <li><a href="recipes/floris-polish-rye.html">Polish rye bread</a> <em>Polish rye bread from Maria Floris' 'Bakery, cakes and simple confectionery'</em></li>
+                       
+                       </ul>
+               
+                       <h4>Floris</h4>
+                       <ul>
+                       
+                               <li><a href="recipes/floris-polish-rye.html">Polish rye bread</a> <em>Polish rye bread from Maria Floris' 'Bakery, cakes and simple confectionery'</em></li>
+                       
+                       </ul>
+               
+                       <h4>Wholemeal</h4>
+                       <ul>
+                       
+                               <li><a href="recipes/calvel-levain-de-pate-wholemeal.html">Levain De Pâte (wholemeal)</a> <em>Levain De Pâte ajusted for cheap chapatti flour. Under development.</em></li>
+                       
                        </ul>
                
 
                        <li>Add rye and other ancient grain breads</li>
                </ul>
 
-               <p>Last compiled at <a href="https://git.ozva.co.uk/?p=bread;a=commit;h=HEAD">2025-08-30 17:28:14.109140</a></p>
+               <p>Last compiled at <a href="https://git.ozva.co.uk/?p=bread;a=commit;h=HEAD">2026-01-17 22:37:14.200446</a></p>
                </main>
        </body>
 </html>
\ No newline at end of file