From 1ebede4bbab4fc1315cc0bf5fdc402a29eab34e1 Mon Sep 17 00:00:00 2001
From: Alan Pearce
Date: Sat, 13 Sep 2014 09:53:35 +0100
Subject: Fallback to text content if attributes are not found
---
src/microformats/parser.clj | 30 +++++++++++++++++-------------
test/microformats/parser_test.clj | 16 ++++++++++++++--
2 files changed, 31 insertions(+), 15 deletions(-)
diff --git a/src/microformats/parser.clj b/src/microformats/parser.clj
index 3200669..75f7de9 100644
--- a/src/microformats/parser.clj
+++ b/src/microformats/parser.clj
@@ -35,23 +35,27 @@
(defn get-p-property
"Get the p-x property value of an element"
[el]
- (case (:tag el)
- :img (-> el :attrs :alt)
- :area (-> el :attrs :alt)
- :abbr (-> el :attrs :title)
- :data (-> el :attrs :value)
- :input (-> el :attrs :value)
- (or (first (:content el)) "")))
+ (or (case (:tag el)
+ :img (-> el :attrs :alt)
+ :area (-> el :attrs :alt)
+ :abbr (-> el :attrs :title)
+ :data (-> el :attrs :value)
+ :input (-> el :attrs :value)
+ nil)
+ (first (:content el))
+ ""))
(defn get-u-property
"Get the u-x property value of an element"
[el]
- (case (:tag el)
- :a (-> el :attrs :href)
- :area (-> el :attrs :href)
- :img (-> el :attrs :src)
- :object (-> el :attrs :data)
- (get-p-property el)))
+ (or (case (:tag el)
+ :a (-> el :attrs :href)
+ :area (-> el :attrs :href)
+ :img (-> el :attrs :src)
+ :object (-> el :attrs :data)
+ (get-p-property el))
+ (first :content el)
+ ""))
(defn parse-p
"Parse p-* classes within HTML element."
diff --git a/test/microformats/parser_test.clj b/test/microformats/parser_test.clj
index 57bb9d2..0f712de 100644
--- a/test/microformats/parser_test.clj
+++ b/test/microformats/parser_test.clj
@@ -26,8 +26,14 @@
{:name "Example User"}
"@example"
+ {:name "@example"}
+ "@example"
+
+ {:name "Example User"}
+ ""
+
{:name "Example User"}
- "")))
+ "Example User")))
(deftest parse-p-empty-br-hr
(testing "br and hr tags should return empty strings"
@@ -57,4 +63,10 @@
""
{:photo "http://example.com/someimage.png"}
- "")))
+ "http://example.com/someimage.png"
+
+ {:photo "http://example.com/someimage.png"}
+ ""
+
+ {:photo "http://example.com/someimage.png"}
+ "http://example.com/someimage.png")))
--
cgit 1.4.1