diff --git a/src/rss_thread_watch/utils.clj b/src/rss_thread_watch/utils.clj index 788852a..98e3b20 100644 --- a/src/rss_thread_watch/utils.clj +++ b/src/rss_thread_watch/utils.clj @@ -1,25 +1,6 @@ (ns rss-thread-watch.utils "Util functions" (:gen-class)) -;; ===== Generic functions ==== - -(defn indices - ;; https://stackoverflow.com/questions/8641305/find-index-of-an-element-matching-a-predicate-in-clojure - "Returns indexes of elements passing predicate" - [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 @@ -51,3 +32,23 @@ (if result# ~x result#))) + +;; ===== Generic functions ==== + +(defn indices + ;; https://stackoverflow.com/questions/8641305/find-index-of-an-element-matching-a-predicate-in-clojure + "Returns indexes of elements passing predicate" + [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)})))))