(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 :fields})
(extend-map-like test.Dog {:tag "dog" :write {:methods :fields :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"}\n"
(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"}\n"
creates an entry for map-like classes (extend-map-like test.DogBuilder {:tag "build.dog" :write {:empty (fn [] (test.DogBuilder.))} :read :fields}) (extend-map-like test.Dog {:tag "dog" :write {:methods :fields :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\"}\n" (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\"}\n"
(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.framework.access/get obj :school)] (hara.object.framework.access/get proxy :name))), :raw (clojure.core/fn [obj] (clojure.core/let [proxy (hara.object.framework.access/get obj :school)] (hara.object.framework.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.framework.access/get obj :school)] (hara.object.framework.access/get proxy :name))), :raw (clojure.core/fn [obj] (clojure.core/let [proxy (hara.object.framework.access/get obj :school)] (hara.object.framework.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.framework.access/get obj :school)] (hara.object.framework.access/set proxy :name v))), :raw (clojure.core/fn [obj v] (clojure.core/let [proxy (hara.object.framework.access/get obj :school)] (hara.object.framework.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.framework.access/get obj :school)] (hara.object.framework.access/set proxy :name v))), :raw (clojure.core/fn [obj v] (clojure.core/let [proxy (hara.object.framework.access/get obj :school)] (hara.object.framework.access/set proxy :raw v)))}
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close