Я хочу взять извлеченную HTML-страницу и создать из нее оживляющий шаблон
(-> (fetch) ; function returns clj-http.client/get
(:body)
(clojure.java.io/reader)
(html/html-resource) ; enlive
(swap-header)
(swap-body-tag))
Мои два подкачки выглядят так
(defn swap-header [body]
(as-> (html/deftemplate temp body [content] [:body] (html/content content)) x
(apply str (x "testing"))))
(defn swap-body-tag [body]
(as-> (html/deftemplate temp body [disabled] [:body] (html/set-attr :disabled disabled)) x
(apply str (x "yo-123"))))
Таким образом, дилемма состоит в том, что я могу закомментировать любой из этих двух обменов из обратного конвейера выборки, и он отлично работает. Попытка (в любом порядке) дает сбой. Я считаю, что результатом применения шаблона является неправильный формат для создания другого шаблона из него, но я не могу точно понять, где мне нужно быть.
Ошибка, которую я получаю, цепляя их, равна HTML resource not found.
Отредактировано для использования более заполненного кода и удаления компа
Обновление
Я скопировал функцию из https://stackoverflow.com/a/38284236/736368, чтобы сделать строку читателем. который, кажется, заставляет это работать. Это хороший подход с точки зрения производительности?
(->> ctx
(:request)
(fetch)
(:body)
(clojure.java.io/reader)
(html/html-resource)
(swap-body-tag)
(apply str) ; new
(string->stream) ; new
(swap-header))