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)
)))
+