all repos — archive/microformats @ 8d3b9dc5f28587d0290ebf6f7c0bedf0866f5b62

Incomplete Clojure microformats library

Parse multi-type properties on same element

Alan Pearce
commit

8d3b9dc5f28587d0290ebf6f7c0bedf0866f5b62

parent

b12efc0d46294c8c6295971360b67de28127175a

2 files changed, 10 insertions(+), 1 deletion(-)

jump to
M src/microformats/parser.cljsrc/microformats/parser.clj
@@ -328,8 +328,8 @@ "Walk HTML element tree for microformat properties."
[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
M test/microformats/parser_expectations.cljtest/microformats/parser_expectations.clj
@@ -231,6 +231,15 @@ <a class=\"u-url\" href=\"http://example.com\">My Website</a>
<a class=\"u-url\" href=\"http://myblog.com\">My Blog</a> </div>")) +(expect {:items '({:type ("h-card") :properties {:name ("Example User") + :url ("http://example.com" + "http://myblog.com")}}) + :rels {}} + (parse "<div class=\"h-card\"> +<a class=\"u-url p-name\" href=\"http://example.com\">Example User</a> +<a class=\"u-url\" href=\"http://myblog.com\">My Blog</a> +</div>")) + (expect {:items '({:type ("h-card") :properties {:name ("Example") :tel ("01234567890")}})