Liking cljdoc? Tell your friends :D

hara.object.map-like


extend-map-likeclj/smacro

(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"}"
raw docstring

key-selectionclj

(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}
raw docstring

read-proxy-functionsclj

(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)))}
raw docstring

write-proxy-functionsclj

(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)))}
raw docstring

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close