From 078d97a2f8ca6da814ff0a6d405d5c375f860185 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Wed, 24 Sep 2014 18:25:02 +0100 Subject: Concatenate multiple properties with the same name --- src/microformats/parser.clj | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/microformats/parser.clj b/src/microformats/parser.clj index 5786f7c..eee04c4 100644 --- a/src/microformats/parser.clj +++ b/src/microformats/parser.clj @@ -225,11 +225,12 @@ (defn get-mf-properties "Parse children of a microformat, returning a map of properties" [element] - (merge (parse-implied element) - (apply merge (map parse-p (html/select element [(html/attr-starts :class "p-")]))) - (apply merge (map parse-u (html/select element [(html/attr-starts :class "u-")]))) - (apply merge (map parse-dt (html/select element [(html/attr-starts :class "dt-")]))) - (apply merge (map parse-e (html/select element [(html/attr-starts :class "e-")]))))) + (let [cappend (partial merge-with concat)] + (merge (parse-implied element) + (apply cappend (map parse-p (html/select element [(html/attr-starts :class "p-")]))) + (apply cappend (map parse-u (html/select element [(html/attr-starts :class "u-")]))) + (apply cappend (map parse-dt (html/select element [(html/attr-starts :class "dt-")]))) + (apply cappend (map parse-e (html/select element [(html/attr-starts :class "e-")])))))) (defn parse-h "Parse h-* classes within a HTML element." -- cgit 1.4.1