From 58552fe2b3d5953b8bcc6a97fb87dc44bda4f180 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Mon, 22 Sep 2014 21:02:04 +0100 Subject: Test + implement multi-child property parsing --- src/microformats/parser.clj | 10 +++++----- test/microformats/parser_expectations.clj | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/microformats/parser.clj b/src/microformats/parser.clj index 8e325e3..fb0dc0d 100644 --- a/src/microformats/parser.clj +++ b/src/microformats/parser.clj @@ -174,13 +174,13 @@ (defn parse-h "Parse h-* classes within a HTML element." [element] - (let [el (first (html/select element [(html/union [(html/attr-starts :class "p-") - (html/attr-starts :class "u-") - (html/attr-starts :class "dt-") - (html/attr-starts :class "e-")])]))] + (let [el (html/select element [(html/union [(html/attr-starts :class "p-") + (html/attr-starts :class "u-") + (html/attr-starts :class "dt-") + (html/attr-starts :class "e-")])])] (hash-map :type (get-mf-names element) :properties (merge (parse-implied element) - (apply merge ((juxt parse-p parse-u parse-dt parse-e) el)))))) + (apply merge (map #(apply merge %) (map (juxt parse-p parse-u parse-dt parse-e) el))))))) (defn select-h "Select h-* elements within a HTML document." diff --git a/test/microformats/parser_expectations.clj b/test/microformats/parser_expectations.clj index 93a21b0..2fc8a19 100644 --- a/test/microformats/parser_expectations.clj +++ b/test/microformats/parser_expectations.clj @@ -129,3 +129,22 @@ (expect {:items [{:type ["h-card"] :properties {:name '("Example User")}}] :rels {}} (parse "

Example User

")) + +(expect + {:items [{:type ["h-adr"], + :properties {:street-address '("665 3rd St."), + :extended-address '("Suite 207"), + :locality '("San Francisco"), + :region '("CA"), + :postal-code '("94107"), + :country-name '("U.S.A."), + :name '("665 3rd St. Suite 207 San Francisco, CA 94107 U.S.A.")}}] + :rels {}} + (parse "

+665 3rd St. +Suite 207 +San Francisco, +CA +94107 +U.S.A. +

")) -- cgit 1.4.1