(extend-map-like cls {:keys [read write exclude include proxy] :as opts})
creates an entry for map-like classes
(extend-map-like test.DogBuilder {:tag "build.dog" :write {:empty (fn [_] (test.DogBuilder.))} :read :reflect})
(extend-map-like test.Dog {:tag "dog" :write {:methods :reflect :from-map (fn [m] (-> m (write/from-map test.DogBuilder) (.build)))} :exclude [:species]})
(with-out-str (prn (write/from-data {:name "hello"} test.Dog))) => "#dog{:name "hello"}"
(extend-map-like test.Cat {:tag "cat" :write {:from-map (fn [m] (test.Cat. (:name m)))} :exclude [:species]})
(extend-map-like test.Pet {:tag "pet" :write {:from-map (fn [m] (case (:species m) "dog" (write/from-map m test.Dog) "cat" (write/from-map m test.Cat)))}})
(with-out-str (prn (write/from-data {:name "hello" :species "cat"} test.Pet))) => "#cat{:name "hello"}"
creates an entry for map-like classes (extend-map-like test.DogBuilder {:tag "build.dog" :write {:empty (fn [_] (test.DogBuilder.))} :read :reflect}) (extend-map-like test.Dog {:tag "dog" :write {:methods :reflect :from-map (fn [m] (-> m (write/from-map test.DogBuilder) (.build)))} :exclude [:species]}) (with-out-str (prn (write/from-data {:name "hello"} test.Dog))) => "#dog{:name "hello"}" (extend-map-like test.Cat {:tag "cat" :write {:from-map (fn [m] (test.Cat. (:name m)))} :exclude [:species]}) (extend-map-like test.Pet {:tag "pet" :write {:from-map (fn [m] (case (:species m) "dog" (write/from-map m test.Dog) "cat" (write/from-map m test.Cat)))}}) (with-out-str (prn (write/from-data {:name "hello" :species "cat"} test.Pet))) => "#cat{:name "hello"}"
(key-selection m include exclude)
selects map based on keys
(key-selection {:a 1 :b 2} [:a] nil) => {:a 1}
(key-selection {:a 1 :b 2} nil [:a]) => {:b 2}
selects map based on keys (key-selection {:a 1 :b 2} [:a] nil) => {:a 1} (key-selection {:a 1 :b 2} nil [:a]) => {:b 2}
(read-proxy-functions proxy)
creates a proxy access through a field in the object
(read-proxy-functions {:school [:name :raw]}) => '{:name (clojure.core/fn [obj] (clojure.core/let [proxy (hara.object.access/get obj :school)] (hara.object.access/get proxy :name))), :raw (clojure.core/fn [obj] (clojure.core/let [proxy (hara.object.access/get obj :school)] (hara.object.access/get proxy :raw)))}
creates a proxy access through a field in the object (read-proxy-functions {:school [:name :raw]}) => '{:name (clojure.core/fn [obj] (clojure.core/let [proxy (hara.object.access/get obj :school)] (hara.object.access/get proxy :name))), :raw (clojure.core/fn [obj] (clojure.core/let [proxy (hara.object.access/get obj :school)] (hara.object.access/get proxy :raw)))}
(write-proxy-functions proxy)
creates a proxy access through a field in the object
(write-proxy-functions {:school [:name :raw]}) => '{:name (clojure.core/fn [obj v] (clojure.core/let [proxy (hara.object.access/get obj :school)] (hara.object.access/set proxy :name v))), :raw (clojure.core/fn [obj v] (clojure.core/let [proxy (hara.object.access/get obj :school)] (hara.object.access/set proxy :raw v)))}
creates a proxy access through a field in the object (write-proxy-functions {:school [:name :raw]}) => '{:name (clojure.core/fn [obj v] (clojure.core/let [proxy (hara.object.access/get obj :school)] (hara.object.access/set proxy :name v))), :raw (clojure.core/fn [obj v] (clojure.core/let [proxy (hara.object.access/get obj :school)] (hara.object.access/set proxy :raw v)))}
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close