All Downloads are FREE. Search and download functionalities are using the official Maven repository.

clojure.data.xml.jvm.pprint.clj Maven / Gradle / Ivy

;   Copyright (c) Rich Hickey. All rights reserved.
;   The use and distribution terms for this software are covered by the
;   Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;   which can be found in the file epl-v10.html at the root of this distribution.
;   By using this software in any fashion, you are agreeing to be bound by
;   the terms of this license.
;   You must not remove this notice, or any other, from this software.

(ns clojure.data.xml.jvm.pprint
  (:import
   (javax.xml.transform Transformer OutputKeys TransformerFactory)
   (java.io Writer StringReader StringWriter)
   (javax.xml.transform.stream StreamSource StreamResult)))

(defn ^Transformer indenting-transformer []
  (doto (-> (TransformerFactory/newInstance) .newTransformer)
    (.setOutputProperty (OutputKeys/INDENT) "yes")
    (.setOutputProperty (OutputKeys/METHOD) "xml")
    (.setOutputProperty "{http://xml.apache.org/xslt}indent-amount" "2")))

(defn indent-xml
  [xml-str ^Writer writer]
  (let [source (-> xml-str StringReader. StreamSource.)
        result (StreamResult. writer)]
    (.transform (indenting-transformer) source result)))






© 2015 - 2024 Weber Informatics LLC | Privacy Policy