From d5b6c2d56e84a93232c2d3c87d93b70102006bee Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Sun, 21 Sep 2014 20:55:31 +0100 Subject: Add initial implied property parsing --- src/microformats/parser.clj | 13 ++++++++++++- test/microformats/parser_expectations.clj | 3 +++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/microformats/parser.clj b/src/microformats/parser.clj index 38bca21..b3af5e3 100644 --- a/src/microformats/parser.clj +++ b/src/microformats/parser.clj @@ -152,6 +152,16 @@ (r/filter (mf-names-from-class "h-")) (into []))) +(defn- imply-name + "Imply the name of an entity from the element" + [element] + (or (first (:content element)))) + +(defn parse-implied + "Parse implied properties of a HTML element" + [element] + {:name (imply-name element)}) + (defn parse-h "Parse h-* classes within a HTML element." [element] @@ -160,7 +170,8 @@ (html/attr-starts :class "dt-") (html/attr-starts :class "e-")])]))] (hash-map :type (get-mf-names element) - :properties (apply merge ((juxt parse-p parse-u parse-dt parse-e) el))))) + :properties (merge (parse-implied element) + (apply merge ((juxt parse-p parse-u parse-dt parse-e) el)))))) (defn select-h "Select h-* elements within a HTML document." diff --git a/test/microformats/parser_expectations.clj b/test/microformats/parser_expectations.clj index 8948840..53f9ca5 100644 --- a/test/microformats/parser_expectations.clj +++ b/test/microformats/parser_expectations.clj @@ -115,3 +115,6 @@ (expect {:items [{:properties {:name "Example User"} :type ["h-card"]}] :rels {}} (parse "

Example User

")) + +(expect {:items [{:type ["h-card"] :properties {:name "Example User"}}] :rels {}} + (parse "

Example User

")) -- cgit 1.4.1