Added function for merging default board-config with custom parts

Very important in the future. Needs mega testing, I even started writing tests because of this.
This commit is contained in:
Felisp 2024-01-05 14:30:27 +01:00
parent e230e33a55
commit bb02765233

View file

@ -9,6 +9,18 @@
[pred coll] [pred coll]
(keep-indexed #(when (pred %2) %1) coll)) (keep-indexed #(when (pred %2) %1) coll))
(defn map-deep-merge-missing
"Merges two maps but only keys missing from first map"
[m1 m2]
(into m1
(for [k (keys m2)]
(let [val1 (get m1 k)
val2 (get m2 k)]
(if (and (map? val1)
(map? val2))
{k (map-deep-merge-missing val1 val2)}
{k (nil?-else val2 val1)})))))
;; ===== Macros ===== ;; ===== Macros =====
(defmacro nil?-else (defmacro nil?-else
"Return x unless it's nil, the return y" "Return x unless it's nil, the return y"