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