diff options
| author | unwox <me@unwox.com> | 2025-02-17 20:07:26 +0600 |
|---|---|---|
| committer | unwox <me@unwox.com> | 2025-02-17 20:07:26 +0600 |
| commit | 34a6a60c407c75e66f94b185aa6845621e4c49ed (patch) | |
| tree | 607b03512d1470a32a35f90a2e256679aad226ad | |
| parent | fd807bf1952073aff866bd0961ad6929e07da80d (diff) | |
fix guess-weight when there are more than 1 number in a string
| -rw-r--r-- | parser/parser.fnl | 10 |
1 files 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кг"))) |
