(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)) ;; ===== Macros ===== (defmacro nil?-else "Return x unless it's nil, the return y" [x y] `(let [result# ~x] (if (nil? result#) ~y result#))) (defmacro when-else "Evaluates tst, if it's true returns it's result. If it's not, return else" [tst else] `(let [res# ~tst] (if res# res# ~else))) (defmacro ret= "compares two values using [=]. If the result is true returns the value, else the result of [=]. Usefull with if-else" [x y] `(let [x# ~x y# ~y result# ~(= x y)] (if result# ~x result#)))