vl-data-insert.utils

append-if

(append-if m k v)
Appends `v` to the value of `k`. If `k` does not exist in `m`,
`k [v]` is assoced.  If `k` does exist in `m`, `v` is conjed.

Example:
```clojure
(append-if {:Value [1 2 3]} :Value 4)
;; {:Value [1 2 3 4]}
```

check-kw

(check-kw m kw)

ensure-map

(ensure-map x v)
Ensures `x`to be a map. If `x` is a value a map is constucted from
the last keyword and the value.

Example:
```clojure
(ensure-map 10 [:a :b :c])
;; =>
;; [{:c 10} [:a :b]]
(ensure-map {:d 10} [:a :b :c])
;; =>
;; [{:d 10} [:a :b :c]]
```

ensure-vec

(ensure-vec v)
Ensures that `v` is a vector even if `v` is `nil`.

Example:
```clojure
;; important:
(ensure-vec nil) 
;;=> [nil]
;; ^^ because:
(concat [1 2] nil)
;; => (1 2) ; but we need:
(concat [1 2] [nil])
;; => (1 2 nil)
;; to ensure that all
;; Value-vectors keep the same length
(ensure-vec 1)
;; [1]
(ensure-vec [1])
;; [1]
```

path->kw-vec

(path->kw-vec s)
Turns the path into a vector of keywords.

Example:
```clojure
(path->kw-vec "a.b.c")
;; [:a :b :c]
```

replace-if

(replace-if m k v)
Replaces `v`alue of `k`ey in struct if `v`is not `nil`.

Example:
```clojure
(replace-if {:Type "a"} :Type "b")
;; {:Type "b"}
```

vector-if

(vector-if m kw)
Makes the value `v` of keyword `kw` a vector also if `v` is  `nil`.