Woohoo! Transform works.
This commit is contained in:
parent
c9f7f29f0f
commit
7bc60a0bbb
|
@ -26,26 +26,35 @@
|
||||||
(if processor
|
(if processor
|
||||||
(apply processor (list element dispatcher))
|
(apply processor (list element dispatcher))
|
||||||
(map #(process % dispatcher) (:content element))))
|
(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
|
(defmulti transform
|
||||||
"Transform the `obj` which is my first argument using the `dispatcher`
|
"Transform the `obj` which is my first argument using the `dispatcher`
|
||||||
which is my second argument."
|
which is my second argument."
|
||||||
[class class] :default :default)
|
#'transformer-dispatch
|
||||||
|
:default :default)
|
||||||
|
|
||||||
(defmethod transform :default [obj dispatcher]
|
(defmethod transform :default [obj dispatcher]
|
||||||
(process 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))
|
(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))
|
(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))]
|
(let [url (try (java.net.URL. s) (catch Exception any))]
|
||||||
(if url (transform url dispatcher)
|
(if url (transform url dispatcher)
|
||||||
;; otherwise, if s is not a URL, consider it as an HTML fragment,
|
;; otherwise, if s is not a URL, consider it as an HTML fragment,
|
||||||
;; parse and process it
|
;; parse and process it
|
||||||
(process (tagsoup/parser (java.io.StringReader s)) dispatcher)
|
(process (tagsoup/parser (java.io.StringReader s)) dispatcher)
|
||||||
)))
|
)))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue