#+STARTUP: hidestars * example #+begin_src conf # title @ fried onion ## INGREDIENTS # `!/path/to/rcp` to include it # `2!/path/to/rcp` to include two of it # `a = b` set ingredient a to quantity b onion = 2 salt = 1tsp sugar = 1/2tsp butter = 3tbsp # sep --- ## STEPS # `-` means preping step # `>` means cooking step # `+` means serving step # in a step you can add a time range in `[]` # each step might produce some new ingredients `=>` - chop $onion to thin stripes => sliced onion > melt $butter in pan > add ${sliced onion} and $salt > cook while stirring [for 10 minutes] > add $sugar > continue cooking [until onion caramelises] + serve cold #+end_src * cmd cmd [-switches] path/to/file ... I should be able to: - list ingredients of recipies (to buy) - pretty print steps for recipe (prep/cook/both) - search for KEY in ingredients and show availiable recipes with KEY as ingredient - should accept multiple keys and a switch for AND or OR between them + or a custom syntax like =cmd -s"eggs & (tomatoes | potatoes)" lib/*.rcp= + or =cmd -[A|O] -stomatoes -stomatoes -seggs lib/*rcp= (And/Or) - *ls* ??? + list recipies with path + or with title + or both * parse ** Input Recipe file [[example]] ** Output Struct with raw steps and subrecipes * eval ** Input parser output ** Output Struct with - finalised ingredients - resolved steps - subrecipes still remain ** EvalSteps Step also has: - duration :: string or null - result? :: string or null - variables? :: list of strings or null #+begin_src C struct resolved_step { char * text; char * duration; char * result; char ** ingredients; } #+end_src