about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAlan Pearce2014-10-10 19:57:56 +0100
committerAlan Pearce2014-10-10 19:57:56 +0100
commit4debb2f471188fdd17a03f7250050b8e83ae9b32 (patch)
tree19d8a2adcf4b3030ea7e97720073aede5f93bc72
parent3213c0c46a152e709772f0818a9281f5ce0e1988 (diff)
downloadmicroformats-4debb2f471188fdd17a03f7250050b8e83ae9b32.tar.lz
microformats-4debb2f471188fdd17a03f7250050b8e83ae9b32.tar.zst
microformats-4debb2f471188fdd17a03f7250050b8e83ae9b32.zip
Parse values from value-title class elements
-rw-r--r--src/microformats/parser.clj14
-rw-r--r--test/microformats/parser_expectations.clj3
2 files changed, 15 insertions, 2 deletions
diff --git a/src/microformats/parser.clj b/src/microformats/parser.clj
index 0b26372..4f63d55 100644
--- a/src/microformats/parser.clj
+++ b/src/microformats/parser.clj
@@ -92,6 +92,13 @@
   [root url]
   (url/resolve (get-base-url root) url))
 
+(defn get-value-title-class
+  "Get the value-title class of elements"
+  [elements]
+  (str/join " " (into [] ((comp (r/map :title)
+                                (r/map :attrs))
+                          elements))))
+
 (defn get-value-class
   "Get the value class of elements"
   [elements]
@@ -103,8 +110,11 @@
 (defn find-value-class
   "Find and get the value class of elements"
   [el]
-  (when-let [values (seq (html/select el [html/root :> :.value]))]
-    (get-value-class values)))
+  (anacond
+   (not-empty (html/select el [html/root :> :.value-title]))
+   (get-value-title-class %)
+   (not-empty (html/select el [html/root :> :.value ]))
+   (get-value-class %)))
 
 (declare parse-h)
 
diff --git a/test/microformats/parser_expectations.clj b/test/microformats/parser_expectations.clj
index 92e4448..5486898 100644
--- a/test/microformats/parser_expectations.clj
+++ b/test/microformats/parser_expectations.clj
@@ -67,6 +67,9 @@
 (expect {:name '("Name")}
         (parse-p (snippet "<p class=\"p-name\"><span class=\"value\">Name</span></p>")))
 
+(expect {:name '("Name")}
+        (parse-p (snippet "<p class=\"p-name\"><span class=\"value-title\" title=\"Name\">Not this name</span></p>")))
+
 (expect {:name '("Name Endname")}
         (parse-p (snippet "<p class=\"p-name\"><span class=\"value\">Name</span> (this should not be included) <span class=\"value\">Endname</span></p>")))