Skip to content

Commit bbe248f

Browse files
committed
update lazy-xml for reify with explicit 'this' on every method
1 parent d157d64 commit bbe248f

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

src/main/clojure/clojure/contrib/lazy_xml.clj

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -113,31 +113,32 @@
113113
(defn attributes [e]
114114
(let [v (vec (:attrs e))]
115115
(reify org.xml.sax.Attributes
116-
(getLength [] (count v))
117-
(getURI [i] (namespace (key (v i))))
118-
(getLocalName [i] (name (key (v i))))
119-
(getQName [i] (name (key (v i))))
120-
(#^String getValue [#^int i] (val (v i)))
121-
(#^String getType [#^int i] "CDATA"))))
116+
(getLength [_] (count v))
117+
(getURI [_ i] (namespace (key (v i))))
118+
(getLocalName [_ i] (name (key (v i))))
119+
(getQName [_ i] (name (key (v i))))
120+
(getValue [_ uri name] (get (:attrs e) name))
121+
(#^String getValue [_ #^int i] (val (v i)))
122+
(#^String getType [_ #^int i] "CDATA"))))
122123

123124
(defn- emit-element
124125
"Recursively prints as XML text the element struct e. To have it
125126
print extra whitespace like clojure.xml/emit, use the :pad true
126127
option."
127-
[e ch]
128+
[e #^org.xml.sax.ContentHandler ch]
128129
(if (instance? String e)
129130
(.characters ch (.toCharArray #^String e) 0 (count e))
130131
(let [nspace (namespace (:tag e))
131132
qname (name (:tag e))]
132-
(.startElement ch nspace qname qname (attributes e))
133+
(.startElement ch (or nspace "") qname qname (attributes e))
133134
(doseq [c (:content e)]
134135
(emit-element c ch))
135-
(.endElement ch nspace qname qname))))
136+
(.endElement ch (or nspace "") qname qname))))
137+
136138

137139
(defn emit
138-
[e & optseq]
139-
(let [opts (apply array-map optseq)
140-
content-handler (atom nil)
140+
[e & {:as opts}]
141+
(let [content-handler (atom nil)
141142
trans (-> (javax.xml.transform.TransformerFactory/newInstance)
142143
.newTransformer)]
143144

@@ -157,15 +158,16 @@
157158
trans
158159
(javax.xml.transform.sax.SAXSource.
159160
(reify org.xml.sax.XMLReader
160-
(getContentHandler [] @content-handler)
161-
(setDTDHandler [handler])
162-
(setFeature [name value])
163-
(setProperty [name value])
164-
(setContentHandler [ch] (reset! content-handler ch))
165-
(#^void parse [#^org.xml.sax.InputSource _]
166-
(.startDocument @content-handler)
167-
(emit-element e @content-handler)
168-
(.endDocument @content-handler)))
161+
(getContentHandler [_] @content-handler)
162+
(setDTDHandler [_ handler])
163+
(setFeature [_ name value])
164+
(setProperty [_ name value])
165+
(setContentHandler [_ ch] (reset! content-handler ch))
166+
(#^void parse [_ #^org.xml.sax.InputSource _]
167+
(when @content-handler
168+
(.startDocument @content-handler)
169+
(emit-element e @content-handler)
170+
(.endDocument @content-handler))))
169171
(org.xml.sax.InputSource.))
170172
(javax.xml.transform.stream.StreamResult. *out*))))
171173

0 commit comments

Comments
 (0)