Back

cdata (clj)

(source)

variable

Examples

clojure/data.xml
(ns ^{:doc "Tests for reading [:tag {:attr 'value} body*] as XML."
      :author "Alan Malloy"}
  clojure.data.xml.test-sexp
  (:require
   [clojure.test :refer :all]
   [clojure.data.xml :refer :all]
   [clojure.data.xml.test-utils :refer (test-stream lazy-parse*)]))

(deftest with-cdata
  (let [xml-input (element :tag {:attr "value"}
                           (element :body {} (cdata "not parsed <stuff")))
        sexp-input [:tag {:attr "value"} [:body {} [:-cdata "not parsed <stuff"]]]]
    (is (= xml-input
           (sexp-as-element sexp-input)))))

(deftest with-multiple-cdata
  (testing "separate cdata"
    (let [xml-input (element :tag {:attr "value"}
                             (element :body {}
                                      (cdata "not parsed <stuff")
                                      (cdata "more not parsed <stuff")))
          sexp-input [:tag {:attr "value"} [:body {}
                                            (list [:-cdata "not parsed <stuff"]
                                                  [:-cdata "more not parsed <stuff"])]]]
      (is (= xml-input
             (sexp-as-element sexp-input)))))
  (testing "cdata with embedded ]]>"
    (let [xml-input (element :tag {:attr "value"}
                             (element :body {}
                                      (cdata "not parsed <stuff]]")
                                      (cdata ">more not parsed <stuff")))
          sexp-input [:tag {:attr "value"}
                      [:body {}
                       [:-cdata "not parsed <stuff]]>more not parsed <stuff"]]]]
      (is (= (emit-str xml-input)
             (emit-str (sexp-as-element sexp-input)))))))
clojure/data.xml
(ns ^{:doc "Tests for XML parsing functions."
      :author "Chris Houser"}
  clojure.data.xml.test-parse
  (:require
   [clojure.test :refer :all]
   [clojure.data.xml :refer [parse-str element]]
   [clojure.data.xml.test-utils :refer [test-stream lazy-parse*]]))

(deftest test-cdata-parse
(let [input "<cdata><is><here><![CDATA[<dont><parse><me>]]></here></is></cdata>"
      expected (element :cdata {} (element :is {}
                                           (element :here {}
                                                    "<dont><parse><me>")))]
  (is (= expected (lazy-parse* input)))))
clojure/data.xml
(ns clojure.data.xml.test-cljs-basic
  (:require
   [cljs.test :as test :refer [deftest is are]]
   [clojure.data.xml :as xml :refer [parse-str emit-str element element-data element-node]]
   [clojure.data.xml.node :as node]
   [clojure.data.xml.js.dom :as dom]))

(deftest roundtrips
  (are [dxml xml] (do (is (= dxml (xml/parse-str xml)))
                      (is (= dxml (xml/parse-str (xml/emit-str dxml)))))
    (xml/element :foo) "<foo/>"
    (xml/element :xmlns.DAV%3A/foo) "<foo xmlns=\"DAV:\"/>"
    (xml/element :foo {} (xml/cdata "<foo")) "<foo><![CDATA[<foo]]></foo>"
    (xml/element :foo {} (xml/xml-comment " bar> ")) "<foo><!-- bar> --></foo>"))