From 8d3b9dc5f28587d0290ebf6f7c0bedf0866f5b62 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Sun, 12 Oct 2014 00:51:52 +0100 Subject: Parse multi-type properties on same element --- src/microformats/parser.clj | 2 +- test/microformats/parser_expectations.clj | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/microformats/parser.clj b/src/microformats/parser.clj index 9bc9d84..92104dc 100644 --- a/src/microformats/parser.clj +++ b/src/microformats/parser.clj @@ -328,8 +328,8 @@ [loc] (when (and (not (z/end? loc)) (not (contains? #{:br :hr} (-> loc z/node :tag)))) - (if-let [class-groups (some->> loc z/node :attrs :class (re-seq #"(?:^|\s)(h|p|u|dt|e)-\w+") (map second) distinct first list)] (map (partial parse-mf loc) class-groups) + (if-let [types (some->> loc z/node :attrs :class (re-seq #"(?:^|\s)(h|p|u|dt|e)-\w+") (map second) set)] (recur (z/next loc))))) (defn continue-walking diff --git a/test/microformats/parser_expectations.clj b/test/microformats/parser_expectations.clj index 654241c..15d41da 100644 --- a/test/microformats/parser_expectations.clj +++ b/test/microformats/parser_expectations.clj @@ -231,6 +231,15 @@ My Blog ")) +(expect {:items '({:type ("h-card") :properties {:name ("Example User") + :url ("http://example.com" + "http://myblog.com")}}) + :rels {}} + (parse "