From 441d7fd5a5a0ccf8d53238d717ec5119024cbbfa Mon Sep 17 00:00:00 2001 From: unwox Date: Thu, 19 Dec 2024 16:03:45 +0600 Subject: parse teaware volume and let users filter by it --- parser/parser.fnl | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'parser/parser.fnl') 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} -- cgit v1.2.3