about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAlan Pearce2014-10-10 09:14:30 +0100
committerAlan Pearce2014-10-10 09:14:30 +0100
commitbd5a901a5081d01df16ab3a750fdfa403391b3d2 (patch)
tree01dc65b765ac3f32f5e1f32a1951260cd8fe2977
parentc773b522ebafbdfc9019898a83d74503700352e5 (diff)
downloadmicroformats-bd5a901a5081d01df16ab3a750fdfa403391b3d2.tar.lz
microformats-bd5a901a5081d01df16ab3a750fdfa403391b3d2.tar.zst
microformats-bd5a901a5081d01df16ab3a750fdfa403391b3d2.zip
Add helper function to get base URL
-rw-r--r--src/microformats/parser.clj9
-rw-r--r--test/microformats/parser_expectations.clj3
2 files changed, 12 insertions, 0 deletions
diff --git a/src/microformats/parser.clj b/src/microformats/parser.clj
index ba07fcf..e3a244e 100644
--- a/src/microformats/parser.clj
+++ b/src/microformats/parser.clj
@@ -65,6 +65,15 @@
        (apply str)
        str/trim))
 
+(defn get-base-url
+  "Find the base-url of a document."
+  [document]
+  (-> document
+      (html/select [:head :> [:base (html/attr? :href)]])
+      first
+      :attrs
+      :href))
+
 (defn get-value-class
   "Get the value class of elements"
   [elements]
diff --git a/test/microformats/parser_expectations.clj b/test/microformats/parser_expectations.clj
index 1c6d4f1..7344fde 100644
--- a/test/microformats/parser_expectations.clj
+++ b/test/microformats/parser_expectations.clj
@@ -51,6 +51,9 @@
 <p><a class=\"h-org\"></a></p>
 </div>"))))
 
+(expect "http://example.com"
+        (get-base-url (snippet "<head><base href=\"http://example.com\"></head>")))
+
 (expect {:name '("Name")}
         (parse-p (snippet "<p class=\"p-name\"><span class=\"value\">Name</span></p>")))