Liking cljdoc? Tell your friends :D

shuriken.associative

### Operations on associative structures
raw docstring

deep-mergeclj

(deep-merge m & more)

Deep merges two or more nested maps.

(deep-merge {:x {:a :a  :b :b  :c :c}}
            {:x {:a :aa :b :bb}}
            {:x {:a :aaa}})

=> {:x {:a :aaa  :b :bb  :c :c}}
Deep merges two or more nested maps.

```clojure
(deep-merge {:x {:a :a  :b :b  :c :c}}
            {:x {:a :aa :b :bb}}
            {:x {:a :aaa}})

=> {:x {:a :aaa  :b :bb  :c :c}}
```
sourceraw docstring

deflatten-keysclj

(deflatten-keys m)

Builds a nested map out of a map obtained from flatten-keys.

(deflatten-keys {[:a :b :c] :x
                 [:a :b :d] :y})
=> {:a {:b {:c :x
            :d :y}}}
Builds a nested map out of a map obtained from [[flatten-keys]].

```clojure
(deflatten-keys {[:a :b :c] :x
                 [:a :b :d] :y})
=> {:a {:b {:c :x
            :d :y}}}
```
sourceraw docstring

flatten-keysclj

(flatten-keys m)

Transforms a nested map into a map where keys are paths through the original map and values are leafs these paths lead to.

(flatten-keys {:a {:b {:c :x
                       :d :y}}})
=> {[:a :b :c] :x
    [:a :b :d] :y}
(flatten-keys {:a {:b {:c :x
                       :d :y}}})
=> {[:a :b :c] :x
    [:a :b :d] :y}
Transforms a nested map into a map where keys are paths through
the original map and values are leafs these paths lead to.

```clojure
(flatten-keys {:a {:b {:c :x
                       :d :y}}})
=> {[:a :b :c] :x
    [:a :b :d] :y}
```

    (flatten-keys {:a {:b {:c :x
                           :d :y}}})
    => {[:a :b :c] :x
        [:a :b :d] :y}
sourceraw docstring

index-byclj

(index-by f coll)
(index-by f strategy coll)

Like group-by except it applies a strategy to each grouped collection. A strategy is a function with signature key, entries) -> entry where entry is the one that will be indexed. The default strategy asserts there is only one entry for the given key and returns it.

(def ms [{:a 1 :b 2} {:a 3 :b 4} {:a 5 :b 4}])

(index-by :a ms)
=> {1 {:a 1 :b 2}
    3 {:a 3 :b 4}
    5 {:a 5 :b 4}}

(index-by :b ms)
=> ; clojure.lang.ExceptionInfo (Duplicate entries for key 4)

(index-by :b (fn [key entries]
             (last entries))
        ms)
=> {2 {:a 1 :b 2}
    4 {:a 5 :b 4}}
Like `group-by` except it applies a strategy to each grouped
collection.
A strategy is a function with signature `key, entries) -> entry`
where `entry` is the one that will be indexed.
The default strategy asserts there is only one entry for the given
key and returns it.

```clojure
(def ms [{:a 1 :b 2} {:a 3 :b 4} {:a 5 :b 4}])

(index-by :a ms)
=> {1 {:a 1 :b 2}
    3 {:a 3 :b 4}
    5 {:a 5 :b 4}}

(index-by :b ms)
=> ; clojure.lang.ExceptionInfo (Duplicate entries for key 4)

(index-by :b (fn [key entries]
             (last entries))
        ms)
=> {2 {:a 1 :b 2}
    4 {:a 5 :b 4}}
```
sourceraw docstring

map-differenceclj

(map-difference m & ms)

Returns a map that is the first map without elements of the remaining maps.

Returns a map that is the first map without elements of the
remaining maps.
sourceraw docstring

map-keysclj

(map-keys f m)

Applies f to each key of m.

Applies `f` to each key of `m`.
sourceraw docstring

map-valsclj

(map-vals f m)

Applies f to each value of m.

Applies `f` to each value of `m`.
sourceraw docstring

merge-with-planclj

(merge-with-plan plan & maps)

Like merge-with except that the combination fn of a specific pair of entries is determined by looking up their key in plan. If not found, falls back to the function found under key :else or if not provided to a function that returns the value in the right-most map, thus providing the behavior of merge. In addition to a map, plan can also be a function accepting a key and returning a combination fn for the two values to merge.

Like `merge-with` except that the combination fn of a specific pair
of entries is determined by looking up their key in `plan`. If not
found, falls back to the function found under key `:else` or if not
provided to a function that returns the value in the right-most map,
thus providing the behavior of `merge`.
In addition to a map, `plan` can also be a function accepting a key
and returning a combination fn for the two values to merge.
sourceraw docstring

split-mapclj

(split-map m & kss)

Returns a series of maps built by splitting m along each sequence of keys in kss: the first map has (first kss) as keys, the second one (second kss), etc ... while the last map has the remaining keys from m.

Returns a series of maps built by splitting `m` along each sequence
of keys in `kss`: the first map has `(first kss)` as keys, the second
one `(second kss)`, etc ... while the last map has the remaining keys
from `m`.
sourceraw docstring

submap?clj

(submap? map1 map2)

Determines whether map1 is a subset, keys and values wise, of map2.

Determines whether `map1` is a subset, keys and values wise, of
`map2`.
sourceraw docstring

unindexclj

Alias of vals.

Alias of `vals`.
sourceraw docstring

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

× close