summaryrefslogtreecommitdiff
path: root/parser
diff options
context:
space:
mode:
Diffstat (limited to 'parser')
-rw-r--r--parser/artoftea.fnl7
-rw-r--r--parser/parser.fnl11
2 files changed, 11 insertions, 7 deletions
diff --git a/parser/artoftea.fnl b/parser/artoftea.fnl
index 773f038..5c7efff 100644
--- a/parser/artoftea.fnl
+++ b/parser/artoftea.fnl
@@ -26,8 +26,7 @@
(*
(parser.anywhere
(parser.tag :option {:value "*" :selected "selected"}
- (* (peg.Cg parser.pegs.number :weight) (+ (peg.P "г") " гр")
- parser.pegs.spaces)))
+ (peg.Cg (parser.till "</option>") :weight)))
(parser.anywhere
(parser.tag :p {:class "price"}
(parser.tag :span {:id "*"}
@@ -41,8 +40,10 @@
(fn normalize [product]
(local year (parser.guess-year product.title))
- (local weight (number.string->number product.weight))
+ (local weight (or (parser.guess-weight product.weight ["г"])
+ (parser.guess-weight product.title)))
(local price (number.string->number product.price))
+
{:site "artoftea"
:title product.title
:url product.url
diff --git a/parser/parser.fnl b/parser/parser.fnl
index 78df882..e97351f 100644
--- a/parser/parser.fnl
+++ b/parser/parser.fnl
@@ -137,14 +137,17 @@
(- (+ (peg.P "г") "год") (peg.P "гр"))))
:match text)))
-(fn guess-weight [text]
+(fn guess-weight [text extra-metrics]
(if text
(let [peg (peg.Ct
(anywhere
(* (peg.C pegs.number)
(maybe " ")
- (+ (* (peg.C (+ (peg.P "гр") "кг"))
- (+ (peg.P " ") "." "\n" -1))))))]
+ (+ (* (peg.C (+ (peg.P "гр") "кг"
+ (if extra-metrics
+ (table.unpack extra-metrics)
+ "")))
+ (+ (peg.P " ") "\t" "." "\n" -1))))))]
(let [result (peg:match text)]
(if result
(let [[number metric] result]
@@ -159,7 +162,7 @@
(* (peg.C pegs.number)
(maybe " ")
(+ (* (peg.C (+ (peg.P "мл") "л"))
- (+ (peg.P " ") "." "\n" -1))))))]
+ (+ (peg.P " ") "\t" "." "\n" -1))))))]
(let [result (peg:match text)]
(if result
(let [[number metric] result]