From 648699e0c15773bc332b2876ad0aa21c897e3654 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Tue, 23 Sep 2014 21:38:11 +0100 Subject: Add full support for implied names --- src/microformats/parser.clj | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/microformats/parser.clj b/src/microformats/parser.clj index b28fce7..875caec 100644 --- a/src/microformats/parser.clj +++ b/src/microformats/parser.clj @@ -3,6 +3,16 @@ [clojure.core.reducers :as r] [clojure.string :as str])) +(defmacro cond-let + [& clauses] + (when clauses + (list 'if-let ['x (first clauses)] + (if (next clauses) + (second clauses) + (throw (IllegalArgumentException. + "cond-let requires an even number of forms"))) + (cons 'cond-let (next (next clauses)))))) + (defn mf-names-from-class "Get microformat classnames from a class attribute" [prefix] @@ -165,8 +175,18 @@ "Imply the name of an entity from the element" [element] (case (:tag element) + :abbr (-> element :attrs :title) :img (-> element :attrs :alt) - (node-to-text (:content element)))) + (cond-let + (first (html/select element [html/root :> [:img html/only-child]])) + (-> x :attrs :alt) + (first (html/select element [html/root :> [:abbr html/only-child (html/attr? :title)]])) + (-> x :attrs :title) + (first (html/select element [html/root :> html/only-child :> [:img html/only-child]])) + (-> x :attrs :alt) + (first (html/select element [html/root :> html/only-child :> [:abbr html/only-child (html/attr? :title)]])) + (-> x :attrs :title) + true (node-to-text (:content element))))) (defn- imply-url [element] -- cgit 1.4.1