Recipe Grid

Recipe Grid is a collection of standalone utilities and also a Python library for describing recipes in a tabular form, as illustrated by the following (rather tasty) recipe below for tiffin:

_images/tiffin_example.png

These recipes have several advantages over traditional recipe descriptions:

  • Recipes are typically more concise.

  • Ingredients and method are shown together so no need to cross-reference between the two.

  • Parts of the method are never “hidden” in an ingredients list (e.g. ‘1 onion, finely chopped’)

  • Opportunities to reorder steps or do them in parallel (or not!) are easy to spot while still providing a suggested order.

Recipes are described in Markdown files using a convenient to write recipe description language. For example, the recipe above was generated from the following Markdown:

Tiffin
======

A delicious, chocolatey treat.

    6 tsp of cocoa powder
    2 tbsp of golden syrup
    1/2 cup of butter
    1/2 cup of sugar
    16oz of digestives
    200g of chocolate

    cover(
        mix(
            heat until bubbling (cocoa powder, golden syrup, butter, sugar),
            crush(digestives)
        ),
        melt(chocolate)
    )

Using Recipe Grid

The best place to get started is with the Recipe Grid tutorial:

Once you’ve made it through the tutorial, the following reference documentation covers the remaining details of the recipe grid language and command line tools.

The recipe_grid Python Library

Recipe Grid also provides a limited, stable(ish) Python API for parsing and rendering recipes.

Recipe Compilation

Recipe Grid provides APIs for compiling recipes embedded in Markdown files (using the API in recipe_grid.markdown) or directly from recipe description language sources (see recipe_grid.compiler).

Recipe Data Structure

Recipe’s are parsed into Recipe data structures which form the Recipe Grid data model. These structures abstractly describe the Directed Acyclic Graph (DAG) which defines a recipe.

Recipe Rendering

The recipe_grid.renderer module provides a framework for converting recipes into tabular form and then rendering these into a desired output format. This may be used to build alternative renderers for recipes.

Sphinx Recipe Grid Extension

Finally, a Sphinx extension is provided for embedding recipes within Sphinx documentation.