diff options
author | Ekaitz Zarraga <ekaitz@elenq.tech> | 2025-05-04 20:09:14 +0200 |
---|---|---|
committer | Ekaitz Zarraga <ekaitz@elenq.tech> | 2025-05-04 20:09:14 +0200 |
commit | 46402db0fceee23295547c5b47990bc68a1619d9 (patch) | |
tree | 5ea56a5e698c1ef850c1ec5912ffd25b54d63171 | |
parent | abf15a6595d5f5ad5700823389992b0efd66f312 (diff) |
-rw-r--r-- | cook/parse-internals.sld | 4 | ||||
-rw-r--r-- | cook/parse.scm | 10 | ||||
-rw-r--r-- | cook/parse.sld | 4 |
3 files changed, 18 insertions, 0 deletions
diff --git a/cook/parse-internals.sld b/cook/parse-internals.sld index 1aba787..39761fb 100644 --- a/cook/parse-internals.sld +++ b/cook/parse-internals.sld @@ -2,6 +2,7 @@ (import (scheme base) (srfi 1) (srfi 9) + (srfi 26) (srfi 69) (chibi) (chibi char-set ascii) @@ -39,6 +40,9 @@ recipe? recipe-metadata recipe-body + recipe-ingredients + recipe-cookware + recipe-timers <step> step? step-elements diff --git a/cook/parse.scm b/cook/parse.scm index 54ea23c..7092905 100644 --- a/cook/parse.scm +++ b/cook/parse.scm @@ -72,6 +72,16 @@ https://github.com/cooklang/spec/blob/main/EBNF.md (metadata recipe-metadata) (body recipe-body)) +(define (recipe-find pred recipe) + (concatenate + (map (lambda (x) (filter pred x)) + (map step-elements + (filter step? (recipe-body recipe)))))) + +(define recipe-ingredients (cut recipe-find ingredient? <>)) +(define recipe-cookware (cut recipe-find cookware? <>)) +(define recipe-timers (cut recipe-find timer? <>)) + (define (metadata-line-list->hash-table meta-lines) (let ((metadata (make-hash-table))) (for-each (lambda (line) diff --git a/cook/parse.sld b/cook/parse.sld index b92e586..fdef4a0 100644 --- a/cook/parse.sld +++ b/cook/parse.sld @@ -2,6 +2,7 @@ (import (scheme base) (srfi 1) (srfi 9) + (srfi 26) (srfi 69) (chibi) (chibi char-set ascii) @@ -42,5 +43,8 @@ recipe? recipe-metadata recipe-body + recipe-ingredients + recipe-cookware + recipe-timers parse-cook) (include "parse.scm")) |