about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/microformats/parser.clj13
-rw-r--r--test/microformats/parser_expectations.clj3
2 files changed, 15 insertions, 1 deletions
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 "<div class=\"h-card\"><p class=\"p-name\">Example User</p></div>"))
+
+(expect {:items [{:type ["h-card"] :properties {:name "Example User"}}] :rels {}}
+        (parse "<p class=\"h-card\">Example User</p>"))