File tree Expand file tree Collapse file tree 3 files changed +52
-3
lines changed
Expand file tree Collapse file tree 3 files changed +52
-3
lines changed Original file line number Diff line number Diff line change 1414 com.cognitect/transit-clj {:mvn/version " 1.0.324" }
1515 medley/medley {:mvn/version " 1.3.0" }
1616 mvxcvi/puget {:mvn/version " 1.3.1" }
17- tolitius/xml-in {:mvn/version " 0.1.1" }}
17+ tolitius/xml-in {:mvn/version " 0.1.1" }
18+ org.clj-commons/hickory {:mvn/version " 0.7.3" }
19+ org.jsoup/jsoup {:mvn/version " 1.14.3" }}
1820 :aliases
1921 {:run
2022 {:main-opts [" -m" " cq.main" ]}
Original file line number Diff line number Diff line change 22 (:require [clojure.data.csv :as csv]
33 [clojure.data.json :as json]
44 [clojure.data.xml :as xml]
5+ [hickory.core :as html]
6+ [hickory.render :refer [hickory-to-html]]
57 [clojure.edn :as edn]
68 [clojure.pprint :as ppt]
79 [clojure.java.io :as io]
167169 (with-open [w (io/writer out)]
168170 (emit x w)))))
169171
172+ (defn ->html-reader
173+ [_]
174+ (fn [in]
175+ (html/as-hickory (html/parse (slurp (io/reader in))))))
176+
177+ (defn ->html-writer
178+ [_]
179+ (fn [x out]
180+ (binding [*out* (io/writer out)]
181+ (print (hickory-to-html x))
182+ (flush ))))
183+
170184(def formats
171185 {" json" {:->reader ->json-reader
172186 :->writer ->json-writer}
185199 " transit" {:->reader ->transit-reader
186200 :->writer ->transit-writer}
187201 " xml" {:->reader ->xml-reader
188- :->writer ->xml-writer}})
202+ :->writer ->xml-writer}
203+ " html" {:->reader ->html-reader
204+ :->writer ->html-writer}})
189205
190206(defn format->reader
191207 [format in opts]
Original file line number Diff line number Diff line change 22 (:require [cq.formats :as sut]
33 [clojure.test :refer :all ]
44 [clojure.java.io :as io]
5- [clojure.string :as str])
5+ [clojure.string :as str]
6+ [hickory.core :as html])
67 (:import [java.io ByteArrayInputStream BufferedInputStream PrintStream ByteArrayOutputStream]))
78
89(defn- to-out-stream
152153 <a:article>Hello</a:article>
153154</a:html>\n "
154155 (test-writer-str sut/->xml-writer {:pretty true } test-xml-data))))))
156+
157+ (def test-html-str
158+ " <p>hello</p>" )
159+
160+ (def test-html-data
161+ {:type :document
162+ :content
163+ [{:type :element
164+ :attrs nil
165+ :tag :html
166+ :content
167+ [{:type :element
168+ :attrs nil
169+ :tag :head :content nil }
170+ {:type :element
171+ :attrs nil
172+ :tag :body :content
173+ [{:type :element
174+ :attrs nil
175+ :tag :p
176+ :content [" hello" ]}]}]}]})
177+
178+ (deftest html
179+ (testing " reader"
180+ (is (= test-html-data
181+ (test-reader-str sut/->html-reader nil test-html-str))))
182+
183+ (testing " writer"
184+ (is (= " <html><head></head><body><p>hello</p></body></html>"
185+ (test-writer-str sut/->html-writer nil test-html-data)))))
You can’t perform that action at this time.
0 commit comments