summaryrefslogtreecommitdiffstats
path: root/README.org
blob: 909ef3e723acc6a9f145b587bf0520db4baa3028 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#+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]
#+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