<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="../coverage.css"/> <title> the_great_game/utils.clj </title> </head> <body> <span class="covered" title="1 out of 1 forms covered"> 001 (ns the-great-game.utils) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 002 </span><br/> <span class="covered" title="1 out of 1 forms covered"> 003 (defn cyclic? </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 004 "True if two or more elements of `route` are identical" </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 005 [route] </span><br/> <span class="covered" title="10 out of 10 forms covered"> 006 (not= (count route)(count (set route)))) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 007 </span><br/> <span class="covered" title="1 out of 1 forms covered"> 008 (defn deep-merge </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 009 "Recursively merges maps. Stolen from </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 010 https://dnaeon.github.io/recursively-merging-maps-in-clojure/" </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 011 [& maps] </span><br/> <span class="covered" title="1 out of 1 forms covered"> 012 (letfn [(m [& xs] </span><br/> <span class="covered" title="17 out of 17 forms covered"> 013 (if (some #(and (map? %) (not (record? %))) xs) </span><br/> <span class="covered" title="5 out of 5 forms covered"> 014 (apply merge-with m xs) </span><br/> <span class="covered" title="3 out of 3 forms covered"> 015 (last xs)))] </span><br/> <span class="covered" title="4 out of 4 forms covered"> 016 (reduce m maps))) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 017 </span><br/> <span class="covered" title="1 out of 1 forms covered"> 018 (defn make-target-filter </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 019 "Construct a filter which, when applied to a list of maps, </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 020 will pass those which match these `targets`, where each target </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 021 is a tuple [key value]." </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 022 ;; TODO: this would probably be more elegant as a macro </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 023 [targets] </span><br/> <span class="covered" title="2 out of 2 forms covered"> 024 (eval </span><br/> <span class="covered" title="3 out of 3 forms covered"> 025 (list </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 026 'fn </span><br/> <span class="covered" title="3 out of 3 forms covered"> 027 (vector 'm) </span><br/> <span class="covered" title="3 out of 3 forms covered"> 028 (cons </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 029 'and </span><br/> <span class="covered" title="3 out of 3 forms covered"> 030 (map </span><br/> <span class="covered" title="3 out of 3 forms covered"> 031 #(list </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 032 '= </span><br/> <span class="covered" title="6 out of 6 forms covered"> 033 (list (first %) 'm) </span><br/> <span class="covered" title="4 out of 4 forms covered"> 034 (nth % 1)) </span><br/> <span class="covered" title="1 out of 1 forms covered"> 035 targets))))) </span><br/> </body> </html>