From 34a6a60c407c75e66f94b185aa6845621e4c49ed Mon Sep 17 00:00:00 2001 From: unwox Date: Mon, 17 Feb 2025 20:07:26 +0600 Subject: fix guess-weight when there are more than 1 number in a string --- parser/parser.fnl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/parser/parser.fnl b/parser/parser.fnl index 3a4d563..afb1ae2 100644 --- a/parser/parser.fnl +++ b/parser/parser.fnl @@ -159,10 +159,10 @@ (anywhere (* (peg.C pegs.number) (maybe " ") - (* (peg.C (+ (peg.P "гр") "кг" - (if extra-metrics - (table.unpack extra-metrics) - ""))) + (* (peg.C + (if extra-metrics + (+ (peg.P "гр") "кг" (table.unpack extra-metrics)) + (+ (peg.P "гр") "кг"))) (+ (pnot pegs.letter) -1)))))] (let [result (peg:match text)] (if result @@ -172,6 +172,8 @@ nil)) (fn test-guess-weight [] + (assert (= nil (guess-weight "за 1"))) + (assert (= 357 (guess-weight "за 1 шт 357 гр"))) (assert (= 1 (guess-weight "1гр"))) (assert (= 150 (guess-weight "150 гр"))) (assert (= 1000 (guess-weight "1кг"))) -- cgit v1.2.3