(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 builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |