♻️ Refactor shape attrs extraction helpers

This commit is contained in:
Andrey Antukh 2023-09-12 16:01:10 +02:00
parent e6f8022de0
commit 385fd9c4e6
15 changed files with 231 additions and 211 deletions

View file

@ -19,7 +19,7 @@
(defn get
([obj k]
(when-not (nil? obj)
(when (some? obj)
(unchecked-get obj k)))
([obj k default]
(let [result (get obj k)]
@ -27,7 +27,8 @@
(defn contains?
[obj k]
(some? (unchecked-get obj k)))
(when (some? obj)
(js/Object.hasOwn obj k)))
(defn get-keys
[obj]
@ -105,11 +106,27 @@
(js* "~{} in ~{}" prop obj))
(defn map->obj
[o]
(reduce-kv (fn [result k v]
(let [k (if (keyword? k) (name k) k)
v (if (keyword? v) (name v) v)]
(unchecked-set result k v)
result))
[x]
(cond
(nil? x)
nil
(keyword? x)
(name x)
(map? x)
(reduce-kv (fn [m k v]
(let [k (if (keyword? k) (name k) k)]
(unchecked-set m k (^function map->obj v))
m))
#js {}
o))
x)
(coll? x)
(reduce (fn [arr v]
(.push arr v)
arr)
(array)
x)
:else x))