Back

Element (clj)

(source)

variable

Examples

clojure/data.xml
(ns clojure.data.xml.spec
  (:require [clojure.spec :as s]
            [#?(:cljs cljs.spec.impl.gen :clj clojure.spec.gen) :as gen]
            clojure.test.check.generators
            [clojure.data.xml :as xml]
            [clojure.data.xml.name :as name]
            [clojure.data.xml.name :as node]
            #?@(:cljs [[clojure.data.xml.js.dom :as dom]])
            [clojure.string :as str]))


(s/def ::node/Element
  (s/keys :req-un [::node/tag]
          :opt-un [::node/attrs ::node/content]))

#?(:cljs
   (do (s/def ::dom/Element (s/with-gen (partial instance? dom/Element)
                              #(gen/fmap dom/element-node (s/gen ::node/Element))))
       (s/def ::dom/Text (s/with-gen (partial instance? dom/Text)
                           #(gen/fmap dom/text-node (gen/string-ascii))))))

(s/def ::xml/Element
  #?(:clj ::node/Element
     :cljs (s/or :dom ::dom/Element
                 :rec ::node/Element)))

(s/def ::xml/Node
  (s/or :text ::xml/Text
        :elem ::xml/Element))