From 7bc60a0bbb99cd4b947d73e6995f03d46e2a2072 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Tue, 30 Apr 2019 17:51:36 +0100 Subject: [PATCH] Woohoo! Transform works. --- src/html_to_md/transformer.clj | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/html_to_md/transformer.clj b/src/html_to_md/transformer.clj index 6a42fc6..b08ef9d 100644 --- a/src/html_to_md/transformer.clj +++ b/src/html_to_md/transformer.clj @@ -26,26 +26,35 @@ (if processor (apply processor (list element dispatcher)) (map #(process % dispatcher) (:content element)))) - (string? element) element)) + + (string? element) element + (or (seq? element) (vector? element)) + (map #(process % dispatcher) element))) + +(defn- transformer-dispatch + [a _] + (class a)) (defmulti transform "Transform the `obj` which is my first argument using the `dispatcher` which is my second argument." - [class class] :default :default) + #'transformer-dispatch + :default :default) (defmethod transform :default [obj dispatcher] (process obj dispatcher)) -(defmethod transform [java.net.URI Object] [uri dispatcher] +(defmethod transform java.net.URI [uri dispatcher] (process (html/html-resource uri) dispatcher)) -(defmethod transform [java.net.URL Object] [url dispatcher] +(defmethod transform java.net.URL [url dispatcher] (transform (.toURI url) dispatcher)) -(defmethod transform [String Object] [s dispatcher] +(defmethod transform String [s dispatcher] (let [url (try (java.net.URL. s) (catch Exception any))] (if url (transform url dispatcher) ;; otherwise, if s is not a URL, consider it as an HTML fragment, ;; parse and process it (process (tagsoup/parser (java.io.StringReader s)) dispatcher) ))) +