about summary refs log tree commit diff stats
path: root/src/microformats/parser.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/microformats/parser.clj')
-rw-r--r--src/microformats/parser.clj19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/microformats/parser.clj b/src/microformats/parser.clj
index 8d5bb10..ba07fcf 100644
--- a/src/microformats/parser.clj
+++ b/src/microformats/parser.clj
@@ -188,8 +188,7 @@
   [element]
   (->> element
        element-to-classes
-       (r/filter (prefixed-by? "h-"))
-       (into [])))
+       (filter (prefixed-by? "h-"))))
 
 (defn- parse-implied-name
   "Get the implied name of an entity"
@@ -270,13 +269,13 @@
   (hash-map :type (get-mf-names element)
             :properties (get-mf-properties element)))
 
-(defn select-h
-  "Select top-level h-* elements within a HTML element."
-  [loc]
-  (when (not (z/end? loc))
-    (if (some->> loc z/node first :attrs :class (re-matcher #"(?:^|\s) h-\w"))
-      (z/node loc)
-      (recur (z/next loc)))))
+(defn map-h
+  "Map fn to top-level h-* elements within a HTML element."
+  [fn loc]
+  (if (some->> loc z/node :attrs :class (re-matcher #"(?:^|\s) h-\w"))
+    (list (fn (z/node loc)))
+    (when (not (z/end? loc))
+      (recur fn (z/next loc)))))
 
 (defn parse-rel
   "Parse rel attributes of an HTML link element"
@@ -300,4 +299,4 @@
   "Parse a HTML string with microformats"
   [html]
   (let [document (html/html-snippet (str/trim html))]
-    {:items (mapv parse-h (some->> document z/xml-zip select-h)) :rels (parse-rels document)}))
+    {:items (some->> document first z/xml-zip (map-h parse-h)) :rels (parse-rels document)}))