diff options
Diffstat (limited to 'cook/parse.scm')
-rw-r--r-- | cook/parse.scm | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/cook/parse.scm b/cook/parse.scm index bfb50a7..2ccc4a6 100644 --- a/cook/parse.scm +++ b/cook/parse.scm @@ -56,6 +56,12 @@ https://github.com/cooklang/spec/blob/main/EBNF.md comment? (text comment-text)) +(define-record-type <recipe> + (make-recipe metadata body) + recipe? + (metadata recipe-metadata) + (body recipe-body)) + (define (metadata-line-list->hash-table meta-lines) (let ((metadata (make-hash-table))) (for-each (lambda (line) @@ -176,4 +182,6 @@ https://github.com/cooklang/spec/blob/main/EBNF.md (concatenate els)))) (define (parse-cook str) - (parse-fully recipe str)) + (let ((lis (parse-fully recipe str))) + (let-values (((meta-lines body) (partition metadata-line? lis))) + (make-recipe (metadata-line-list->hash-table meta-lines) body)))) |