diff --git a/src/rss_thread_watch/utils.clj b/src/rss_thread_watch/utils.clj index fa95d4f..13944fd 100644 --- a/src/rss_thread_watch/utils.clj +++ b/src/rss_thread_watch/utils.clj @@ -9,6 +9,18 @@ [pred 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 ===== (defmacro nil?-else "Return x unless it's nil, the return y"