summaryrefslogtreecommitdiff
path: root/parser/parser.fnl
diff options
context:
space:
mode:
Diffstat (limited to 'parser/parser.fnl')
-rw-r--r--parser/parser.fnl21
1 files changed, 19 insertions, 2 deletions
diff --git a/parser/parser.fnl b/parser/parser.fnl
index bf8feed..55296f2 100644
--- a/parser/parser.fnl
+++ b/parser/parser.fnl
@@ -107,7 +107,6 @@
(fn guess-tags [text]
(local text (if text (must (luna.utf8.lower text)) ""))
-
(if (: (anywhere (peg.P "зеленый чай")) :match text)
["Зеленый чай"]
(: (anywhere (peg.P "улун")) :match text)
@@ -142,10 +141,27 @@
(if text
(number.string->number
(: (anywhere
+ ;; FIXME: also account for kilograms
(* (peg.C pegs.number) (maybe " ") "гр"))
:match text))
nil))
+(fn guess-volume [text]
+ (if text
+ (let [peg (peg.Ct
+ (anywhere
+ (* (peg.C pegs.number)
+ (maybe " ")
+ ;; also account for litres
+ (+ (* (peg.C "л") (+ (peg.P " ") "\n" -1))
+ (peg.C "мл")))))]
+ (let [result (peg:match text)]
+ (if result
+ (let [[number metric] result]
+ (* number (if (= metric "л") 1000 1)))
+ nil)))
+ nil))
+
{: match-many
: tag
: anywhere
@@ -155,4 +171,5 @@
:not pnot
: guess-tags
: guess-year
- : guess-weight}
+ : guess-weight
+ : guess-volume}