take PR suggestion

take PR suggestion

--- src/cljs/org/broadinstitute/firecloud_ui/page/workspaces_list.cljs
+++ src/cljs/org/broadinstitute/firecloud_ui/page/workspaces_list.cljs
@@ -95,7 +95,7 @@
          :cell-padding-left nil
          :header-row-style {:fontWeight nil :fontSize "90%"
                             :color (:text-light style/colors) :backgroundColor nil}
-         :header-style {:padding "0 0 1em 14px" :overflow nil}
+         :header-style {:padding "0.5em 0 0.5em 14px" :overflow nil}
          :resizable-columns? false :reorderable-columns? false :sortable-columns? true
          :body-style {:fontSize nil :fontWeight nil
                       :borderLeft border-style :borderRight border-style
@@ -127,7 +127,7 @@
                                [:div {:style {:padding "1.1em 0 0 14px"
                                               :fontStyle (when-not description "oblique")}}
                                 (or description "No description provided")])}
-          {:header "Access Level"
+          {:header "Access Level"
            :sort-by WSAccessLevelKeyFunc :sort-initial :asc
            :content-renderer
            (fn [accessLevel]


Use setToken in a click handler and add set-token function

--- modules/reitit-frontend/src/reitit/frontend/history.cljs
+++ modules/reitit-frontend/src/reitit/frontend/history.cljs
@@ -55,9 +55,9 @@
                  (= 0 (.-button e))
                  (reitit/match-by-path router (.getPath uri)))
           (.preventDefault e)
-          (.replaceToken history (path->token history (str (.getPath uri)
-                                                           (if (seq (.getQuery uri))
-                                                             (str "?" (.getQuery uri))))))))))
+          (.setToken history (path->token history (str (.getPath uri)
+                                                       (if (seq (.getQuery uri))
+                                                         (str "?" (.getQuery uri))))))))))

 (impl/goog-extend
   ^{:jsdoc ["@constructor"
@@ -136,7 +136,17 @@
          token (match->token history match k params query)]
      (token->href history token))))

+(defn set-token
+  "Sets the new route, leaving previous route in history."
+  ([state k params]
+   (set-token state k params nil))
+  ([{:keys [router history]} k params query]
+   (let [match (rf/match-by-name! router k params)
+         token (match->token history match k params query)]
+     (.setToken history token))))
+
 (defn replace-token
+  "Replaces current route. I.e. current route is not left on history."
   ([state k params]
    (replace-token state k params nil))
   ([{:keys [router history]} k params query]


add complete-incremental

add complete-incremental

--- src/cljs/re_form/inputs/completions.cljs
+++ src/cljs/re_form/inputs/completions.cljs
@@ -10,7 +10,7 @@
           cur-pos
           (recur cur-pos))))))

-(defn- options [dict regex word]
+(defn- options-sw [dict regex word]
   (dict (clojure.string/replace word regex "")))

 (defn complete-startswith [regex dict cm option]
@@ -23,9 +23,32 @@
         to {:line (.-line cursor) :ch end-char}
         word (.getRange cm (clj->js from) (clj->js to))]
     (when start-char
-      (when-let [lst (options dict regex word)]
+      (when-let [lst (options-sw dict regex word)]
         (clj->js
          {:list lst
           :from from
           :to to})))))

+(defn- options-incr [words value-fn regex word]
+  (let [cropped-word (clojure.string/replace word regex "")
+        extract-fn (if (map? (first words)) :text identity)]
+    (filter #(-> %
+                 extract-fn
+                 value-fn
+                 (clojure.string/starts-with? cropped-word)) words)))
+
+(defn complete-incremental [regex words value-fn cm option]
+  (let [cursor (.getCursor cm)
+        end-char (.-ch cursor)
+        line (.getLine cm (.-line cursor))
+        start-char (search-backwards line end-char regex)
+        to-pos #(.Pos js/CodeMirror line %)
+        from {:line (.-line cursor) :ch start-char}
+        to {:line (.-line cursor) :ch end-char}
+        word (.getRange cm (clj->js from) (clj->js to))]
+    (when start-char
+      (when-let [lst (options-incr words value-fn regex word)]
+        (clj->js
+         {:list lst
+          :from from
+          :to to})))))


guard agaist URLs

guard agaist URLs

--- src/clojure/zensols/model/classifier.clj
+++ src/clojure/zensols/model/classifier.clj
@@ -24,6 +24,7 @@
   (:use [clj-excel.core :as excel])
   (:require [clojure.tools.logging :as log]
             [clojure.string :as str])
+  (:import [java.io File])
   (:import (zensols.weka NoCloneInstancesEvaluation))
   (:import (weka.classifiers Classifier Evaluation)
            (weka.filters.unsupervised.attribute Remove)
@@ -142,8 +143,8 @@
   file is missing"
   [name & {:keys [fail-if-not-exists?] :or {fail-if-not-exists? true}}]
   (let [file (model-read-resource name)
-        exists? (.exists file)]
-    (if (and fail-if-not-exists? (not exists?))
+        exists? (and (instance? File) (.exists file))]
+    (if (and fail-if-not-exists? (instance? File) (not exists?))
       (throw (ex-info (format "no model file found: %s" file)
                       {:file file})))
     (if-not exists?


Allow collections for all rate/deviation args for uniform-mutation.

--- src/clojush/pushgp/genetic_operators.clj
+++ src/clojush/pushgp/genetic_operators.clj
@@ -65,7 +65,25 @@
                uniform-mutation-string-char-change-rate maintain-ancestors
                atom-generators]
         :as argmap}]
-  (let [string-tweak (fn [st]
+  (let [uniform-mutation-rate
+        (number uniform-mutation-rate)
+
+        uniform-mutation-constant-tweak-rate
+        (number uniform-mutation-constant-tweak-rate)
+
+        uniform-mutation-float-gaussian-standard-deviation
+        (number uniform-mutation-float-gaussian-standard-deviation)
+
+        uniform-mutation-int-gaussian-standard-deviation
+        (number uniform-mutation-int-gaussian-standard-deviation)
+
+        uniform-mutation-tag-gaussian-standard-deviation
+        (number uniform-mutation-tag-gaussian-standard-deviation)
+
+        uniform-mutation-string-char-change-rate
+        (number uniform-mutation-string-char-change-rate)
+
+        string-tweak (fn [st]
                        (apply str (map (fn [c]
                                          (if (< (lrand) uniform-mutation-string-char-change-rate)
                                            (lrand-nth (concat ["\n" "\t"]
@@ -80,7 +98,8 @@
         constant-mutator (fn [token]
                            (let [const (:instruction token)]
                              (if (tag-instruction? const)
-                               (tag-gaussian-tweak token uniform-mutation-tag-gaussian-standard-deviation)
+                               (tag-gaussian-tweak token
+                                                   uniform-mutation-tag-gaussian-standard-deviation)
                                (assoc token
                                       :instruction
                                       (cond


I no longer need that :raw-forms workaround

--- src/oxcart.clj
+++ src/oxcart.clj
@@ -114,10 +114,7 @@
                          (em.jvm/eval mform))]

                (let [ast (-> mform
-                             (util/ast)
-                             (assoc :raw-form form
-                                    :raw-op   (when (list? form)
-                                                (first form))))]
+                             (util/ast))]

                  ;; Add to the accumulator for the whole read program
                  ;;


Minor tweaking

Minor tweaking

--- src/oxcart.clj
+++ src/oxcart.clj
@@ -62,16 +62,17 @@

          ;; bare expression handling
          ;;-----------------------------
-         (let [ast (binding [ana/macroexpand-1 ana.jvm/macroexpand-1
-                             ana/create-var    ana.jvm/create-var
-                             ana/parse         ana.jvm/parse
-                             ana/var?          var?]
-                     (ana.jvm/analyze mform (or env (ana.jvm/empty-env))))
-               r   (e/emit (ana.jvm/analyze `(^:once fn* [] ~mform)
-                                            (or env (ana.jvm/empty-env)))
-                           {:debug?       debug?
-                            :class-loader (or classloader
-                                              (clojure.lang.RT/makeClassLoader))})
+         (let [ast   (binding [ana/macroexpand-1 ana.jvm/macroexpand-1
+                               ana/create-var    ana.jvm/create-var
+                               ana/parse         ana.jvm/parse
+                               ana/var?          var?]
+                       (ana.jvm/analyze mform
+                                        (or env (ana.jvm/empty-env))))
+               r     (-> `(^:once fn* [] ~mform)
+                         (ana.jvm/analyze (or env (ana.jvm/empty-env)))
+                         (e/emit {:debug?       debug?
+                                  :class-loader (or classloader
+                                                    (clojure.lang.RT/makeClassLoader))}))
                class (-> r meta :class)]

            ;; the accumulator for the whole read program


added basic new handler

added basic new handler

--- src/granger/models/books.clj
+++ src/granger/models/books.clj
@@ -10,7 +10,7 @@
 (defn add-book!
   "Create new book review"
   [data]
-  "You have added a new book!")
+  (mongo/with-mongo conn (mongo/insert! :test data)))

 (defn update-book!
   "Update existing book review"


Add `with-ns-aliases`

Add `with-ns-aliases`

--- test/com/nomistech/clojure_the_language/c_200_clojure_basics/s_500_namespaces.clj
+++ test/com/nomistech/clojure_the_language/c_200_clojure_basics/s_500_namespaces.clj
@@ -1,2 +1,68 @@
 (ns com.nomistech.clojure-the-language.c-200-clojure-basics.s-500-namespaces
   (:require [midje.sweet :refer :all]))
+
+;;;; ___________________________________________________________________________
+;;;; ---- with-ns-aliases ----
+
+(defn ^:private replace-symbol-using-single-ns-alias-form
+  [form
+   ns-alias-form]
+  (let [[ns-sym as alias-sym] ns-alias-form]
+    (assert (= as :as)
+            (str ":as expected in with-ns-aliases bindings, but got " as))
+    (let [alias-string (name alias-sym)
+          ns-string (name ns-sym)]
+      (if-not (symbol? form)
+        form
+        (if (not= (namespace form)
+                  alias-string)
+          form
+          (symbol ns-string
+                  (name form)))))))
+
+(defn ^:private replace-symbol-using-multiple-ns-alias-forms
+  [form
+   ns-alias-forms]
+  (reduce replace-symbol-using-single-ns-alias-form
+          form
+          ns-alias-forms))
+
+(defmacro with-ns-aliases
+  "Replace the specified namespace aliases in `form`.
+  `ns-alias-forms` is of the form:
+      [[namespace-1 :as alias-1]
+       [namespace-2 :as alias-2]
+       ...]
+  Symbols that have `alias-i` as their namespace have it replaced with
+  `namepace-i`.
+  Does not load any namespaces."
+  {:style/indent 1}
+  [[& ns-alias-forms]
+   & body]
+  `(do ~@(clojure.walk/prewalk #(replace-symbol-using-multiple-ns-alias-forms
+                                 %
+                                 ns-alias-forms)
+                               body)))
+
+;;;; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+(fact "`with-ns-aliases` works"
+
+  (fact
+    (macroexpand-1 '(with-ns-aliases [[my-ns :as my-alias]]
+                      my-alias/x
+                      y))
+    => '(do my-ns/x
+            y))
+
+  (fact
+    (with-ns-aliases [[clojure.set :as cst]
+                      [clojure.string :as csg]]
+      (let [v1 #{:a :b}
+            v2 #{:b :c}
+            v3 "."
+            v4 ["a" "b" "c"]]
+        [(cst/union v1 v2)
+         (csg/join v3 v4)]))
+    => [#{:a :b :c}
+        "a.b.c"]))


config form card

config form card

--- src/cljs/swarmpit/component/service/create_config.cljs
+++ src/cljs/swarmpit/component/service/create_config.cljs
@@ -250,27 +250,32 @@
       (html
         [:div.Swarmpit-form
          [:div.Swarmpit-form-context
-          (comp/paper
-            {:className "Swarmpit-paper Swarmpit-form-context"
-             :elevation 0}
-            (comp/grid
-              {:container true
-               :spacing   40}
-              (form-settings)
-              (form-networks)
-              (form-ports)
-              (form-mounts)
-              (form-secrets)
-              (when (<= 1.30 (state/get-value [:docker :api]))
-                (form-configs))
-              (form-variables)
-              (form-labels)
-              (form-logdriver)
-              (form-resources)
-              (form-deployment))
-            (html
-              [:div.Swarmpit-form-buttons
-               (composite/progress-button
-                 "Create"
-                 create-service-handler
-                 processing?)]))]]))))+          (comp/card
+            {:className "Swarmpit-form-card"}
+            (comp/card-header
+              {:className "Swarmpit-form-card-header"
+               :title     "New Service"
+               :subheader (str "from " (get-in (state/get-value settings/form-value-cursor) [:repository :name]))})
+            (comp/card-content
+              {}
+              (comp/grid
+                {:container true
+                 :spacing   40}
+                (form-settings)
+                (form-networks)
+                (form-ports)
+                (form-mounts)
+                (form-secrets)
+                (when (<= 1.30 (state/get-value [:docker :api]))
+                  (form-configs))
+                (form-variables)
+                (form-labels)
+                (form-logdriver)
+                (form-resources)
+                (form-deployment))
+              (html
+                [:div.Swarmpit-form-buttons
+                 (composite/progress-button
+                   "Create"
+                   create-service-handler
+                   processing?)])))]]))))


Use yes-or-no.

Use yes-or-no.

--- src/cake/tasks/release.clj
+++ src/cake/tasks/release.clj
@@ -4,7 +4,7 @@
         [cake.tasks.jar :only [jarfile uberjarfile warfile]]
         [clojure.java.io :only [reader copy]]
         [useful.utils :only [verify]]
-        [cake.utils :only [prompt-read]])
+        [cake.utils :only [prompt-read yes-or-no]])
   (:import [com.jcraft.jsch JSch ChannelExec Logger UserInfo JSchException UIKeyboardInteractive]
            [java.io FileInputStream]))

@@ -154,7 +154,7 @@
         host     (or (:host     release) "clojars.org")
         username (or (:username release) "clojars")
         dest     (or (:dest     release) ".")]
-    (when (#{"y" "Y"} (prompt-read (format "Are you sure you want to release to %s? [y/N]" host)))
+    (when (yes-or-no (format "Are you sure you want to release to %s?" host))
       (ssh-session {:host host :username username}
         (upload (map lookup-file files) dest)))))


Add some line breaks to the Impressum

Add some line breaks to the Impressum

--- src/catalog/layout/fop.clj
+++ src/catalog/layout/fop.clj
@@ -541,28 +541,27 @@
                     "IMPRESSUM")
              (block {:color (color :blue) :space-after"1em" :font-family "StoneSansSemibold"}
                     (layout/translations :catalog-all))
-             (block {:space-after "1em"}
-                    "Für Kundinnen und Kunden der SBS sowie für Interessenten")
-             (block {:space-after "1em"}
-                    "Erscheint sechsmal jährlich und weist alle seit der letzten Ausgabe neu in die SBS aufgenommenen Bücher nach")
-             (block {:space-after "1em"}
-                    "«Neu im Sortiment» kann im Jahresabonnement per Post zu CHF / € 78.– oder per E-Mail gratis bezogen werden")
+             (block {:space-after "1em"} "Für Kundinnen und Kunden der SBS sowie für Interessenten")
+             (block                      "Erscheint sechsmal jährlich und listet alle seit der letzten")
+             (block {:space-after "1em"} "Ausgabe neu in die SBS aufgenommenen Bücher auf")
+             (block                      "«Neu im Sortiment» kann im Jahresabonnement per Post")
+             (block {:space-after "1em"} "zu CHF / € 78.– oder per E-Mail gratis bezogen werden")
              (block {:font-family "StoneSansSemibold"
                      :color (color :blue)
                      :space-before "3em" :space-after "1em" :role "H2"}
                     "Herausgeber")
-             [:fo:block "SBS Schweizerische Bibliothek für Blinde, Seh- und Lesebehinderte"]
+             [:fo:block "SBS Schweizerische Bibliothek für"]
+             [:fo:block "Blinde, Seh- und Lesebehinderte"]
              [:fo:block "Grubenstrasse 12"]
              [:fo:block "CH-8045 Zürich"]
              [:fo:block "Fon +41 43 333 32 32"]
              [:fo:block "Fax +41 43 333 32 33"]
              [:fo:block
               (external-link "http://www.sbs.ch" "www.sbs.ch" "Link zur SBS Website")]
-             (block {:space-before "1em"}
-                    "Abonnement, Ausleihe und Verkauf: "
-                    (external-link "mailto:nutzerservice@sbs.ch" "nutzerservice@sbs.ch"
-                                   "Email des SBS Nutzerservice"))
-             (block {:space-before "3em" :font-size "12pt"}
+             (block {:space-before "1em"} "Abonnement, Ausleihe und Verkauf: "
+                    (external-link "mailto:nutzerservice@sbs.ch" "nutzerservice@sbs.ch" "Email des SBS Nutzerservices"))
+             (block "Verkauf Institutionen: " (external-link "mailto:medienverlag@sbs.ch" "medienverlag@sbs.ch" "Email des SBS Medienverlages"))
+             (block {:space-before "2em" :font-size "12pt"}
                     "© SBS Schweizerische Bibliothek für Blinde, Seh- und Lesebehinderte"))]]))

 (defn- layout-master-set [date]


Fixed ConnectionConfiguration for  stardog connection

--- src/kabob/build/input_kb.clj
+++ src/kabob/build/input_kb.clj
@@ -27,7 +27,7 @@
           repository-name (:repo-name args)
           user (:username args)
           password (:password args)
-          kb (kb (StardogRepository. (.credentials user password (.server server-url (ConnectionConfiguration/to repository-name)))))]
+          kb (kb (StardogRepository. (.credentials (.server (ConnectionConfiguration/to repository-name) server-url) user password)))]
       ;kb (kb (VirtuosoRepository. "jdbc:virtuoso://virtuoso-prod:1111","dba","dba"))]
       (initialize-kb kb)))


Need to load bootstrap

Need to load bootstrap

--- src/clj/cljs/repl/node.clj
+++ src/clj/cljs/repl/node.clj
@@ -49,39 +49,49 @@
                (.append sb (char c))
                (recur sb (.read in)))))))

-(defn node-eval [repl-env js]
+(defn node-eval
+  "Evaluate a JavaScript string in the Node REPL process."
+  [repl-env js]
   (let [{:keys [in out]} @(:socket repl-env)]
     (write out js)
     {:status :success
      :value (read-response in)}))

-(defn load-javascript [repl-env ns url]
+(defn load-javascript
+  "Load a JavaScript file into the Node REPL process."
+  [repl-env ns url]
   (node-eval repl-env (slurp url)))

-(defn setup [repl-env]
-  (println "Setting up Node.js REPL")
-  (let [bldr (ProcessBuilder. (into-array ["node"]))
-        _    (-> bldr
-               (.redirectInput (io/file (io/resource "cljs/repl/node_repl.js")))
-               (.redirectOutput ProcessBuilder$Redirect/INHERIT)
-               (.redirectError ProcessBuilder$Redirect/INHERIT))
-        proc (.start bldr)
-        env  (ana/empty-env)]
-    ;; TODO: temporary hack, should wait till we can read the start string
-    ;; from the process - David
-    (Thread/sleep 1000)
-    (reset! (:socket repl-env)
-      (socket (:host repl-env) (:port repl-env)))
-    (repl/load-file repl-env "cljs/core.cljs")
-    (swap! (:loaded-libs repl-env) conj "cljs.core")
-    (repl/evaluate-form repl-env
-      env "<cljs repl>"
-      '(set! *print-fn* (fn [x] (js/node_repl_print (pr-str x)))))))
+(defn setup
+  ([repl-env] (setup repl-env nil))
+  ([repl-env opts]
+    (println "Setting up Node.js REPL")
+    (let [bldr (ProcessBuilder. (into-array ["node"]))
+          _ (-> bldr
+              (.redirectInput (io/file (io/resource "cljs/repl/node_repl.js")))
+              (.redirectOutput ProcessBuilder$Redirect/INHERIT)
+              (.redirectError ProcessBuilder$Redirect/INHERIT))
+          proc (.start bldr)
+          env (ana/empty-env)]
+      ;; TODO: temporary hack, should wait till we can read the start string
+      ;; from the process - David
+      (Thread/sleep 1000)
+      (reset! (:socket repl-env)
+        (socket (:host repl-env) (:port repl-env)))
+      ;; bootstrap
+      (load-javascript repl-env nil (io/resource "cljs/bootstrap_node.js"))
+      ;; load core
+      (repl/load-file repl-env "cljs/core.cljs")
+      (repl/evaluate-form repl-env
+        env "<cljs repl>"
+        '(set! *print-fn* (fn [x] (js/node_repl_print (pr-str x))))))))

 (defrecord NodeEnv [host port socket loaded-libs]
   repl/IJavaScriptEnv
   (-setup [this]
     (setup this))
+  (-setup [this opts]
+    (setup this opts))
   (-evaluate [this filename line js]
     (node-eval this js))
   (-load [this ns url]


Shutdown agents on exit; fixes #94

Shutdown agents on exit; fixes #94

--- src/clj/leiningen/spec.clj
+++ src/clj/leiningen/spec.clj
@@ -5,8 +5,10 @@
 (defn make-run-form [project speclj-args]
   (let [exit-fn (if (or (:eval-in-leiningen project)
                         (= (:eval-in project) :leiningen))
-                  `main/exit
-                  `System/exit)]
+                  'main/exit
+                  '(fn [code]
+                     (shutdown-agents)
+                     (System/exit code)))]
     `(let [failures# (speclj.cli/run ~@speclj-args)]
        (~exit-fn (min 255 failures#)))))


Disable dumping requests.

Disable dumping requests.

--- src/clj/quil_site/core.clj
+++ src/clj/quil_site/core.clj
@@ -2,6 +2,7 @@
   (:require [compojure.core :refer [defroutes GET]]
             [compojure.handler :refer [site]]
             [compojure.route :refer [files]]
+            [ring.util.response :as resp]
             [ring.middleware.json :as json]
             [ring.adapter.jetty :refer [run-jetty]]
             [ring.middleware.stacktrace :as stacktrace]
@@ -17,12 +18,12 @@

 (defn dump-request [handler]
   (fn [req]
-;    (clojure.pprint/pprint req)
+    (clojure.pprint/pprint req)
     (handler req)))

 (def handler
   (-> #'app
-      dump-request
+;      dump-request
       site
       (json/wrap-json-body {:keywords? true})
       json/wrap-json-response


Reading all message files

Reading all message files

--- src/clj_mrazik/irc_bot.clj
+++ src/clj_mrazik/irc_bot.clj
@@ -33,19 +33,25 @@
         (println "Read" (count output) "lines from" filename)
         output))

-(def verbs            (atom nil))
-(def adverbs          (atom nil))
-(def adjectives       (atom nil))
-(def nouns            (atom nil))
-(def congrat-messages (atom nil))
+(def verbs                   (atom nil))
+(def adverbs                 (atom nil))
+(def adjectives              (atom nil))
+(def nouns                   (atom nil))
+(def congrat-messages        (atom nil))
+(def happy-birthday-messages (atom nil))
+(def quotes                  (atom nil))
+(def papalas                 (atom nil))

 (defn load-all-data-files
     []
-    (reset! verbs      (load-vocabulary "data/verbs.txt"))
-    (reset! adverbs    (load-vocabulary "data/adverbs.txt"))
-    (reset! adjectives (load-vocabulary "data/adjectives.txt"))
-    (reset! nouns      (load-vocabulary "data/nouns.txt"))
-    (reset! congrat-messages (load-vocabulary "data/congratulations.txt")))
+    (reset! verbs                   (load-vocabulary "data/verbs.txt"))
+    (reset! adverbs                 (load-vocabulary "data/adverbs.txt"))
+    (reset! adjectives              (load-vocabulary "data/adjectives.txt"))
+    (reset! nouns                   (load-vocabulary "data/nouns.txt"))
+    (reset! congrat-messages        (load-vocabulary "data/congratulations.txt"))
+    (reset! happy-birthday-messages (load-vocabulary "data/happy-birthday.txt"))
+    (reset! quotes                  (load-vocabulary "data/quotes.txt"))
+    (reset! papalas                 (load-vocabulary "data/papalas.txt")))

 (load-all-data-files)


Implemented several commands, like schedule, users, time, sunrise, and sunset

--- src/clj_mrazik/irc_bot.clj
+++ src/clj_mrazik/irc_bot.clj
@@ -13,12 +13,10 @@
 (ns clj-mrazik.irc-bot)

 (require '[irclj.core :as irc])
+(require '[clj-calendar.calendar :as calendar])

-(def connection
-    (atom nil))
-
-(def bot-nick
-    (atom nil))
+(require '[clj-mrazik.dyncfg   :as dyncfg])
+(require '[clj-mrazik.schedule :as schedule])

 (defn message-to-channel?
     [message]
@@ -36,14 +34,27 @@
         incoming-message
         (assoc incoming-message :target (:nick incoming-message))))

+(defn format-schedule
+    [schedule]
+    (apply str (for [s schedule]
+       (str (subs (-> s :formatted :from) 0 5) "-" (subs (-> s :formatted :to) 0 5) ", "))))
+
 (defn prepare-reply-text
     [incomming-message nick input-text]
     (let [in-channel? (message-to-channel? incomming-message)
           input       (if in-channel?
-                          (subs input-text (count @bot-nick))
+                          (subs input-text (+ 2 (count @dyncfg/bot-nick)))
                           input-text)
-          prefix      (if in-channel? (str nick ": "))]
-        (str prefix "?")))
+          prefix      (if in-channel? (str nick ": "))
+          response    (condp = input
+                          "help" "commands: schedule users time sunrise sunset"
+                          "schedule" (format-schedule @dyncfg/schedule)
+                          "users"    (-> @dyncfg/configuration :server :recipients)
+                          "time"     (calendar/format-time (calendar/get-calendar))
+                          "sunrise"  (schedule/get-sunrise (:geolocation @dyncfg/configuration))
+                          "sunset"   (schedule/get-sunset  (:geolocation @dyncfg/configuration))
+                          "?")]
+        (str prefix response)))

 (defn on-incoming-message
     [connection incoming-message]
@@ -54,14 +65,14 @@
            command :command} incoming-message]
            (println "Received message from" nick "to" target ":" text "(" host command ")")
            (println incoming-message)
-           (if (message-for-me? @bot-nick incoming-message)
+           (if (message-for-me? @dyncfg/bot-nick incoming-message)
                (irc/reply connection (create-reply incoming-message)
                                      (prepare-reply-text incoming-message nick text)))))

 (defn send-message
     [recipients target message-text]
     (let [message {:target target :command "PRIVMSG"}]
-        (irc/reply @connection message (str recipients " " message-text))))
+        (irc/reply @dyncfg/connection message (str recipients " " message-text))))

 (defn start-irc-bot
     [configuration]
@@ -73,8 +84,8 @@
         (let [conn (irc/connect server port nick
                                 :callbacks {:privmsg on-incoming-message})]
             (println "Connected, joining to channel" channel)
-            (reset! connection conn)
-            (reset! bot-nick nick)
-            (irc/join @connection channel)
+            (reset! dyncfg/connection conn)
+            (reset! dyncfg/bot-nick nick)
+            (irc/join @dyncfg/connection channel)
             (println "Connected..."))))


Dictionary and random messages might be disabled via ini file

--- src/clj_mrazik/irc_bot.clj
+++ src/clj_mrazik/irc_bot.clj
@@ -136,6 +136,9 @@
     (let [in-channel? (message-to-channel? incomming-message)
           modules     (-> @dyncfg/configuration :modules)
           number-cruncher? (:number-cruncher modules)
+          s-expressions?   (:s-expressions modules)
+          dictionary?      (:dictionary modules)
+          random-messages? (:random-messages modules)
           input       (if in-channel?
                           (subs input-text (+ 2 (count @dyncfg/bot-nick)))
                           input-text)
@@ -151,12 +154,13 @@
                           "Good bot" "I know"
                           "Good bot." "I know"
                           (cond
-                              (and number-cruncher? (is-number? input))        (print-prime-factors input)
-                              (and number-cruncher? (is-two-numbers? input))   (print-gcd input)
-                              (and number-cruncher? (is-factorial? input))     (print-factorial input)
-                              (is-s-expression? input)         (s-expression input)
-                              (is-word-from-dictionary? input) (return-words-from-dictionary input)
-                              :else                            (random-message)))]
+                              (and number-cruncher? (is-number? input))               (print-prime-factors input)
+                              (and number-cruncher? (is-two-numbers? input))          (print-gcd input)
+                              (and number-cruncher? (is-factorial? input))            (print-factorial input)
+                              (and s-expressions?   (is-s-expression? input))         (s-expression input)
+                              (and dictionary?      (is-word-from-dictionary? input)) (return-words-from-dictionary input)
+                              :else (if random-messages? (random-message)
+                                                         "Command not understood")))]
         {:prefix prefix
          :response response})
         (catch Exception e


Changed 'series' to a more appropriate name

--- src/cljc/witan/schema.cljc
+++ src/cljc/witan/schema.cljc
@@ -48,7 +48,7 @@

 (def Model
   "Models are the center-piece of a Forecast"
-  {(s/required-key :series)     IdType
+  {(s/required-key :model-id)   IdType
    (s/required-key :name)       s/Str
    (s/required-key :owner)      IdType
    (s/required-key :version)    s/Int
@@ -99,7 +99,7 @@

 (def Forecast
   "Forecast"
-  {(s/required-key :series)        IdType
+  {(s/required-key :forecast-id)   IdType
    (s/required-key :name)          s/Str
    (s/required-key :owner)         IdType
    (s/required-key :version)       s/Int


Start of scales

Start of scales

--- src/cljs/guitar1/neck.cljs
+++ src/cljs/guitar1/neck.cljs
@@ -12,7 +12,7 @@

 (def chromatic [:A :A# :B :C :C# :D :D# :E :F :F# :G :G#])
 (def strings [:E :A :D :G :B :E])
-(def ionian (:S :S :H :S :S :S :H)); ???
+(def ionian '(true false true false true true false true false true false true))

 (defn stri
   [start-note]
@@ -27,6 +27,7 @@

 (defn neck []
   [:div.neck
+   (println (interleave (stri :C) ionian))
    (conj (map string-html (reverse strings))
          [:ul.string.frets
           (map #(vector :li %) (into [] (range 24)))])])


Hook resolve-symbol also in fetch source cause it uses tools.reader/read

--- src/cljs/replumb/repl.cljs
+++ src/cljs/replumb/repl.cljs
@@ -634,14 +634,18 @@
                                    read-file-fn!
                                    (fn [result]
                                      (if result
-                                       (let [source (:source result)
-                                             rdr (rt/source-logging-push-back-reader source)]
-                                         (dotimes [_ (dec (:line var))] (rt/read-line rdr))
-                                         (-> (r/read {:read-cond :allow :features #{:cljs}} rdr)
-                                             meta
-                                             :source
-                                             common/wrap-success
-                                             cb))
+                                       (binding [ana/*cljs-ns* (:current-ns @app-env)
+                                                 env/*compiler* st
+                                                 r/*data-readers* tags/*cljs-data-readers*
+                                                 r/resolve-symbol ana/resolve-symbol]
+                                         (let [source (:source result)
+                                               rdr (rt/source-logging-push-back-reader source)]
+                                           (dotimes [_ (dec (:line var))] (rt/read-line rdr))
+                                           (-> (r/read {:read-cond :allow :features #{:cljs}} rdr)
+                                               meta
+                                               :source
+                                               common/wrap-success
+                                               cb)))
                                        (cb (common/wrap-success "nil")))))
     (do (when verbose
           (common/debug-prn "No :read-file-fn! provided, skipping source fetching..."))


parse warnings (close #169)

parse warnings (close #169)

--- src/cljs_api_gen/parse.clj
+++ src/cljs_api_gen/parse.clj
@@ -46,6 +46,10 @@
 (create-ns 's)
 (create-ns 'stc)

+;; HACK: We need to create this so 'tools.reader' doesn't crash on `::comp/compiled-cljs`
+;; which is used by cljs.closure. (the comp namespace has to exist)
+(create-ns 'comp)
+
 ;; current namespace and repo that we are parsing.
 (def ^:dynamic *cur-ns*)
 (def ^:dynamic *cur-repo*)
@@ -69,7 +73,9 @@

    :options
    {"compiler-options"      :custom ;; pseudo-namespaces for options
-    "repl-options"          :custom}
+    "repl-options"          :custom
+    "warnings"              :custom
+    "closure-warnings"      :custom}

    :library
    {"cljs.pprint"           :normal
@@ -944,6 +950,42 @@
        (map base-option-item)))

 ;;------------------------------------------------------------
+;; Compiler warnings
+;;------------------------------------------------------------
+
+(defn base-warning-item
+  [id]
+  {:name (name id)
+   :ns *cur-ns*
+   :type "warning"})
+
+(defn parse-warnings
+  "Parse the default warning map (maps to default enabled boolean)."
+  [form]
+  (when (and (list? form)
+             (= (take 2 form) '(def *cljs-warnings*)))
+    (let [warnings-map (nth form 2)]
+      warnings-map)))
+
+(defn warning-items []
+  (let [forms (read-all-ns-forms "cljs.analyzer" :compiler)
+        warnings (first (keep parse-warnings forms))]
+    (map base-warning-item (keys warnings))))
+
+(defn parse-closure-warnings
+  "Parse the default Closure warning map (maps keywords to Closure warning types)."
+  [form]
+  (when (and (list? form)
+             (= (take 2 form) '(def warning-types)))
+    (let [warnings-map (nth form 2)]
+      warnings-map)))
+
+(defn closure-warning-items []
+  (let [forms (read-all-ns-forms "cljs.closure" :compiler)
+        warnings (first (keep parse-closure-warnings forms))]
+    (map base-warning-item (keys warnings))))
+
+;;------------------------------------------------------------
 ;; Top-level namespace parsing
 ;; (with custom corrections)
 ;;------------------------------------------------------------
@@ -1035,6 +1077,14 @@
 (defmethod parse-ns ["repl-options" :options] [ns- api]
   (binding [*cur-ns* ns-]
     (doall (cons (pseudo-ns-item ns-) (option-items repl-options)))))
+
+(defmethod parse-ns ["warnings" :options] [ns- api]
+  (binding [*cur-ns* ns-]
+    (doall (warning-items))))
+
+(defmethod parse-ns ["closure-warnings" :options] [ns- api]
+  (binding [*cur-ns* ns-]
+    (doall (closure-warning-items))))

 (defmethod parse-ns [:default :library] [ns- api]
   (parse-ns* ns- "clojurescript" :library))


fix: sets unrecognized when breaking negative deltas

--- src/cljx/commos/delta.cljx
+++ src/cljx/commos/delta.cljx
@@ -61,7 +61,7 @@
                  (cond (map? v)
                        (mapcat (partial step full-ks) v)

-                       (sequential? v)
+                       (coll? v)
                        [[:ex full-ks v]]

                        :else


delete function

delete function

--- src/codeitlater/format.clj
+++ src/codeitlater/format.clj
@@ -5,10 +5,16 @@

 (defn printline [filepath tuples]
-  "tuple => ((linenum string)...)"
+  "tuple => ((linenum string)...) ;;from no keyword branch
+OR tuple => ((linenum [keyword content])...)"
   (do
     (printf "|-- %s\n" filepath)
-    (doall (map #(printf "  |-- %s\n" %) tuples))
+    (doall (map #(printf "  |-- Line %d: %s\n"
+                         (first %)
+                         (if (= java.lang.String (type (second %)))
+                           (second %)
+                           (clojure.string/join " " (second %))))
+                tuples))
     (println)))

@@ -23,18 +29,6 @@
       (if (> (count tempResult) 1)
         (clojure.pprint/cl-format nil "(~{~a~^|~})" tempResult)
         (first tempResult)))))
-
-
-;;;most part of this function looks duplicated with check-keyword-content
-;;;:= TODO: re-write it
-(defn print-with-keyword [filepath tuples keyword]
-  (let [filter-content (filter #(-> (str "(?<=" (split-keywords keyword) ":" ").*$")
-                                    (re-pattern)
-                                    (re-find (second %)))
-                               tuples)]
-    (if (not (empty? filter-content))
-      (printline filepath filter-content)
-      )))

 (defn check-keyword-content [tuples keyword]
@@ -60,8 +54,8 @@
       (let [thisls (first listset)
             [filepath & tuples] thisls]
         (if keyword
-          (print-with-keyword filepath tuples keyword)
-          ;;(printline filepath (check-keyword-content tuples keyword))
+          ;;(print-with-keyword filepath tuples keyword)
+          (printline filepath (check-keyword-content tuples keyword))
           (printline filepath tuples)
           )
         ;;(println)
@@ -84,7 +78,6 @@
                                path)
                        (str path "/project.org"))
                    path)]
-    (println keyword)
     (with-open [wrtr (io/writer realpath)]
       (loop [listset ls]
         (if (not (empty? listset))


a bit

a bit

--- src/codeitlater/format.clj
+++ src/codeitlater/format.clj
@@ -1,4 +1,5 @@
 (ns codeitlater.format
+  (:require [clojure.string :as str])
   )

 (defn printline [filepath tuples]
@@ -9,11 +10,22 @@
     (println)))

 (defn print-with-keyword [filepath tuples keyword]
-  (let [filter-content (filter
-                        #(-> (str "(?<=" keyword ":" ").*$") (re-pattern) (re-find (second %)))
-                        tuples)]
+  (let [filter-content (filter #(-> (str "(?<=" keyword ":" ").*$")
+                                    (re-pattern)
+                                    (re-find (second %)))
+                               tuples)]
     (if (not (empty? filter-content))
       (printline filepath filter-content)
+      )))
+
+(defn format-keyword-content [filepath tuples keyword]
+  "cut content those including keyword"
+  (let [filter-content (filter #(-> (str "(?<=" keyword ":" ").*$")
+                                    (re-pattern)
+                                    (re-find (second %)))
+                               tuples)]
+    (if (not (empty? filter-content))
+      (doall (map #(list (first %) (str/split (second %) #": ")) filter-content))
       )))

 (defn list2tree [ls keyword]
@@ -35,8 +47,9 @@
 ;;;:= TODO: need to clean ':' after keyword
 (defn write-keyword-sentence [level content]
   "write keyword content in level"
-  (let [this_level_mark (reduce str (take (inc level)
-                               (repeat "*")))]
+  (let [this_level_mark (reduce str
+                                (take (inc level)
+                                      (repeat "*")))]
     ;;(print this_level_mark)
     (doall (map #(str this_level_mark
                       " "


missing boolean hint on regexp?

missing boolean hint on regexp?

--- src/main/cljs/cljs/core.cljs
+++ src/main/cljs/cljs/core.cljs
@@ -8519,7 +8519,7 @@

 ;;;;;;;;;;;;;;;;;;;;;;;;; Regular Expressions ;;;;;;;;;;

-(defn regexp?
+(defn ^boolean regexp?
   "Returns true if x is a JavaScript RegExp instance."
   [x]
   (instance? js/RegExp x))


adding secretary routes and views function

--- src-cljs/bitfondue/core.cljs
+++ src-cljs/bitfondue/core.cljs
@@ -54,11 +54,29 @@
       [:a.nav-link {:href "#"} "Register"]]]]])

 (defn layout
-  []
+  [content]
   [:div
    [header]
    [:br]
-   [chunks]])
+   [:div.container content]])
+
+(defn home-anonymous []
+  [layout [:h1 "Home"]])
+
+(defn home-authenticated []
+  [layout [chunks]])
+
+(defn features []
+  [layout [:h1 "Features"]])
+
+(defn pricing []
+  [layout [:h1 "Pricing"]])
+
+(defn about []
+  [layout [:h1 "About"]])
+
+(defn not-found []
+  [layout [:h1 "404 - Page not found"]])

 ;; ---
 ;; Load data from the API
@@ -80,9 +98,24 @@
                   :error-handler chunks-error-handler}))

 ;; render the dom
-(reagent/render-component [layout]
-                          (. js/document (getElementById "app")))
-
+(def application
+  (js/document.getElementById "app"))
+
+(defn page [page-component]
+  (reagent/render-component
+   [page-component]
+   application))
+
+;; set secretary to use # for the routing, eg. /#dashboard
+(secretary/set-config! :prefix "#")
+
+(defroute "/" [] (page home-anonymous))
+(defroute "/dashboard" [] (page home-authenticated))
+(defroute "/features" [] (page features))
+(defroute "/pricing" [] (page pricing))
+(defroute "/about" [] (page about))
+(defroute "*" [] (page not-found))
+
 ;; load the data from the API
 (fetch-chunks)


Transformed to be tail recursive.

Transformed to be tail recursive.


added support for coloring

added support for coloring

--- src/mastersign/wordcloud.clj
+++ src/mastersign/wordcloud.clj
@@ -16,6 +16,13 @@
 (def font-style Font/BOLD)
 (def base-font (Font. font-family font-style (float 100)))

+(defn default-color-fn
+  [value]
+  (let [n (float 0.4)
+        v1 (float value)
+        v2 (float (- 1.0 value))]
+  (Color. v1 n v2)))
+
 (def default-args
   {:width 600
    :height 200
@@ -25,8 +32,9 @@
    :max-font-size 60
    :max-test-radius 350
    :padding 2
-   :shape-mode :glyph-box ; :word-box, :glyph-box
+   :shape-mode :word-box ; :word-box, :glyph-box
    :allow-rotation true
+   :color-fn #'default-color-fn
    })

 (defn- calc-font-size
@@ -37,11 +45,17 @@
   [{:keys [font] :as args} v]
   (.deriveFont font (calc-font-size args v)))

+(defn- get-color
+  [{:keys [color-fn]} v]
+  (color-fn v))
+
 (defn- build-word-info
-  [g args [text value]]
-  (let [font* (get-font args value)]
+  [g args [id text value1 value2]]
+  (let [font* (get-font args value1)
+        color (get-color args value2)]
     {:text text
      :font font*
+     :color color
      :word-bounds (string-centered-bounds g font* text)
      :glyph-bounds (string-centered-glyphbounds g font* text)}))

@@ -159,8 +173,8 @@
       ;(fill-shape bg)
       ;(draw-shape bg)
       )
-    (doseq [{:keys [text font position rotation]} (filter #(not (nil? %)) word-infos)]
-      (draw-string-centered g text (translate-point c position) :font font :rotation rotation))))
+    (doseq [{:keys [text font color position rotation]} (filter #(not (nil? %)) word-infos)]
+      (draw-string-centered g text (translate-point c position) :font font :color color :rotation rotation))))

 (defn paint-cloud
   [cloud & args]
@@ -214,7 +228,7 @@
    "Yankee" "Zulu"
    "Adventskalender" "Mittelpunktbestimmung" "Zentralfeuerwaffe"])

-(def stats (vec (map (fn [x] [x (/ (rand-int 101) 100.0)]) words)))
+(def stats (vec (map-indexed (fn [id x] [id x (/ (rand-int 101) 100.0) (rand)]) words)))

 (def test-infos (build-word-infos stats))


Rollback metrics versions

Rollback metrics versions

--- src/leiningen/new/mr_clojure/project.clj
+++ src/leiningen/new/mr_clojure/project.clj
@@ -7,10 +7,10 @@
                  [clj-time "0.9.0"]
                  [compojure "1.3.4"]
                  [environ "1.0.0"]
-                 [io.dropwizard.metrics/metrics-logback "3.1.1"]
+                 [com.codahale.metrics/metrics-logback "3.0.2"]
                  [mixradio/graphite-filter "1.0.0"]
-                 [mixradio/instrumented-ring-jetty-adapter "1.0.5"]
-                 [mixradio/radix "1.0.11"]
+                 [mixradio/instrumented-ring-jetty-adapter "1.0.4"]
+                 [mixradio/radix "1.0.10"]
                  [net.logstash.logback/logstash-logback-encoder "4.3"]
                  [org.clojure/clojure "1.6.0"]
                  [org.clojure/tools.logging "0.3.1"]


unreachable db hosts are a special case of the server+port not being accessible as many internal ips dont respond to pings

--- src/metabase/api/meta/db.clj
+++ src/metabase/api/meta/db.clj
@@ -46,8 +46,9 @@
    port Required}
   (let [response-invalid (fn [m] {:status 400 :body {:valid false :message m}})]
     (cond
-      (not (u/host-up? host)) (response-invalid "Host not reachable")
-      (not (u/host-port-up? host port)) (response-invalid "Invalid port")
+      (not (u/host-port-up? host port))
+        (cond (not (u/host-up? host)) (response-invalid "Host not reachable")
+              :else (response-invalid "Invalid port"))
       :else {:valid true})))

 (defendpoint GET "/:id" [id]


We... might need this later? It's nice now. Adding a function that tries a sql statement and logs it _and the full stacktrace_ if something goes pear-shaped

--- src/doctopus/db/schema.clj
+++ src/doctopus/db/schema.clj
@@ -43,13 +43,22 @@
   [[:head_name "varchar(50) references heads(name)"]
    [:tentacle_name "varchar(50) references tentacles(name)"]])

+(defn do-sql-with-logging!
+  [sql-statement]
+  (try (sql/db-do-commands db-spec sql-statement)
+       (catch Exception e (log/error
+                           (->> ["Database error! Attempting to run query:"
+                                 sql-statement
+                                 "Hit exception:"
+                                 (with-out-str (sql/print-sql-exception-chain e))]
+                                (str/join \newline))))))
+
 (defn- create-table!
   "creates a table with a given name and schema"
   [table-name table-schema]
   (log/info "creating" table-name "table")
-  (sql/db-do-commands db-spec
-                      (apply sql/create-table-ddl
-                       (cons (keyword table-name) table-schema))))
+  (do-sql-with-logging! (apply sql/create-table-ddl
+                               (cons (keyword table-name) table-schema))))

 (defn bootstrap
   "checks for the presence of tables and creates them if necessary"


try macro

try macro

--- src/dplearn/layer/base.clj
+++ src/dplearn/layer/base.clj
@@ -11,7 +11,7 @@
   (defn sample-down [this hsample])
   (defn gibbs-hvh [this hsample])
   (defn mini-batch [this k hsample])
-  (defn contrastive-divergence [this k lr vinput]))
+  (defn contra-div! [this k lr vinput]))

 (defrecord NeuronLayer [weights
                         fn-activition-up  fn-activition-down
@@ -55,7 +55,7 @@
         (tuple nvmeans nhsample)
         (recur (dec i) (gibbs-hvh this nhsample)))))

-  (defn contrastive-divergence! [this k lr vsample])
+  (defn contra-div! [this k lr vsample])
     (let [[hmeans hsample] (sample-up this vinput)
           [nvmeans nhsample] (mini-batch this k hsample)
           mw (:weights this)
@@ -66,3 +66,15 @@
         (add! mw (scale mn (- lr)))
         this)))

+(defmacro defnnkind [docstring kind-name & {:as args}]
+  (let [kind-name#                (symbol kind-name)
+        weights-name#             (symbol (str "weights-" kind-name))
+        invoke-up-name#           (symbol (str "invoke-up-" kind-name))
+        invoke-down-name#         (symbol (str "invoke-down-" kind-name))
+        fan-in#                   (:fan-in args)
+        fan-out#                  (:fan-out args)
+        activition-up#            (or (:activition-up args) (fn [ctx] ctx))
+        activition-down#          (or (:activition-down args) (fn [ctx] ctx))]
+    `(do
+       (def ~kind-name#
+         (fn [] )))))


Enable generation of Neu in Grossdruck

Enable generation of Neu in Grossdruck

which is basically a slightly modified version of Neu im Sortiment with
only a subset of the items and the items moved up one hierarchy as we
only show one format.

The headings are using a dynamic binding to make sure they have the
right size in all circumstances. This is a tad ugly as not only the font
sizes should change but also all the space after and before a title
line.

Good enough for now. We might have to look at the layout problem again
later.

--- src/catalog/layout/fop.clj
+++ src/catalog/layout/fop.clj
@@ -35,23 +35,20 @@
                        ;; extent should be smaller than margin-top of region-body
                        :extent (to-mm (dec region-body-margin-top))}]])

-(defn heading [h hash opts]
+(def ^:private ^:dynamic *heading-attrs*
+  {:h1 {:break-before "odd-page" :font-size "26pt" :role "H1"}
+   :h2 {:font-size "17pt" :role "H2"}
+   :h3 {:font-size "15pt" :role "H3"}})
+
+(defn heading [level title path]
   [:fo:block
    (merge {:font-weight "bold"
            :keep-with-next "always"
-           :id hash
+           :id (hash path)
            :space-before "11pt"
-           :space-after "11pt"} opts)
-   (layout/translations h)])
-
-(defn h1 [fmt]
-  (heading fmt (hash [fmt]) {:break-before "odd-page" :font-size "21pt" :role "H1"}))
-
-(defn h2 [fmt genre]
-  (heading genre (hash [fmt genre]) {:font-size "17pt" :role "H2"}))
-
-(defn h3 [fmt genre subgenre]
-  (heading subgenre (hash [fmt genre subgenre]) {:font-size "15pt" :role "H3"}))
+           :space-after "11pt"}
+          (level *heading-attrs*))
+   (layout/translations title)])

 (def ^:private running-header-class-name "running-header")

@@ -95,7 +92,7 @@
 (defn toc [items path to-depth & {:keys [heading?]}]
   (when (map? items)
     [:fo:block {:line-height "150%"}
-     (when heading? (h1 :inhalt))
+     (when heading? (heading :h1 :inhalt []))
      (keep #(toc-entry (% items) (conj path %) to-depth) (order (keys items)))]))

 (def wrap (layout/wrapper ""))
@@ -270,7 +267,7 @@

 (defn subgenre-sexp [items fmt genre subgenre]
   (when-let [items (subgenre items)]
-    [(h3 fmt genre subgenre)
+    [(heading :h3 subgenre [fmt genre subgenre])
      (when-not (#{:kinder-und-jugendbücher} genre)
        (set-marker (layout/translations subgenre)))
      (entries-sexp items)]))
@@ -280,7 +277,7 @@

 (defn genre-sexp [items fmt genre]
   (when-let [items (genre items)]
-    [(h2 fmt genre)
+    [(heading :h2 genre [fmt genre])
      (set-marker (layout/translations genre))
      (cond
        (#{:kinder-und-jugendbücher} genre) (subgenres-sexp items fmt genre)
@@ -289,7 +286,7 @@

 (defn format-sexp [items fmt]
   (when-let [items (fmt items)]
-    [(h1 fmt)
+    [(heading :h1 fmt [fmt])
      (toc items [fmt] 3)
      (set-marker (layout/translations fmt))
      (case fmt
@@ -348,7 +345,7 @@
    [:fo:page-sequence {:master-reference "main"
                        :language "de"}
     [:fo:flow {:flow-name "xsl-region-body"}
-     [:fo:block {:font-size "26pt"} title]
+     [:fo:block {:font-size "26pt" :font-weight "bold"} title]
      [:fo:block {:space-before "20mm"} date]
      [:fo:block {:space-before "170mm"} creator]]]
    [:fo:page-sequence {:master-reference "main"
@@ -357,9 +354,20 @@
     (header :recto)
     (header :verso)

-    [:fo:flow {:flow-name "xsl-region-body"}
-     (toc items)
-     (mapcat #(format-sexp items %) (order (keys items)))]]])
+    (if (= (count items) 1)
+      ;; if we have only one format we assume a slightly different output is wanted
+      (binding [*heading-attrs* {:h1 {:break-before "odd-page" :font-size "26pt" :role "H1"}
+                                 :h2 {:break-before "odd-page" :font-size "26pt" :role "H1"}
+                                 :h3 {:font-size "21" :role "H2"}}]
+        (let [fmt (first (keys items))
+              subitems (fmt items)]
+          [:fo:flow {:flow-name "xsl-region-body"}
+           (toc subitems [fmt] 3 :heading? true)
+           (mapcat #(genre-sexp subitems fmt %) (order (keys subitems)))]))
+      ;; otherwise we use the default output that lists all formats
+      [:fo:flow {:flow-name "xsl-region-body"}
+       (toc items [] 1 :heading? true)
+       (mapcat #(format-sexp items %) (order (keys items)))])]])

 (defn document [items & args]
   (-> items


Upgrade to Cider 17.0

Upgrade to Cider 17.0

--- rc/profiles.clj
+++ rc/profiles.clj
@@ -10,7 +10,7 @@
  ;; and connect Cider to it, you need to get the middleware plugged
  ;; in.  The options are to include it in project.clj, or have it
  ;; more prominent in profiles.clj.  This seems like a better option.
- :user {:plugins [[cider/cider-nrepl "0.15.1"]
+ :user {:plugins [[cider/cider-nrepl "0.17.0"]
                   [jonase/eastwood "0.2.3"]]}}


Have Cider plugin be part of :user, not :repl

The Cider docs say make cider-repl a plugin only for the :repl profile, or else the middleware will run all the time and delay startup.  It says you only need it for :repl.  But that's not really true.  If you want to run the project with "lein run" and connect Cider to it, you need to get the middleware plugged in.  The options are to include it in project.clj, or have it more prominent in profiles.clj.  This seems like a better option.

--- rc/profiles.clj
+++ rc/profiles.clj
@@ -1,7 +1,16 @@
 ;; ln -s ${JV_ENV_HOME}/rc/profiles.clj ~/.lein/profiles.clj

-{:repl {:plugins [[cider/cider-nrepl "0.13.0"]]
-        :dependencies [[org.clojure/tools.nrepl "0.2.12"]]}
+{:repl {:dependencies [[org.clojure/tools.nrepl "0.2.12"]]}

- :user {:plugins [[jonase/eastwood "0.2.3"]] }}
+ ;; The Cider docs say make cider-repl a plugin only for the :repl
+ ;; profile, or else the middleware will run all the time and delay
+ ;; startup.  It says you only need it for :repl.  But that's not
+ ;; really true.  If you want to run the project with "lein run"
+ ;; and connect Cider to it, you need to get the middleware plugged
+ ;; in.  The options are to include it in project.clj, or have it
+ ;; more prominent in profiles.clj.  This seems like a better option.
+ :user {:plugins [[cider/cider-nrepl "0.15.0-snapshot"]
+                  [jonase/eastwood "0.2.3"]]}}
+
+


Do not return the complete set of replies with every thread root, let the client load them from Interaction service if/when needed.

--- src/oc/storage/db/common.clj
+++ src/oc/storage/db/common.clj
@@ -264,11 +264,7 @@
          (r/merge query (r/fn [row]
           (let [replies-base-q (-> (r/table "interactions")
                                 (r/get-all [(r/get-field row :uuid)] {:index :parent-uuid}))]
-            {;; All child comments of the current thread
-             :replies (-> replies-base-q
-                       (r/order-by (r/asc :created-at))
-                       (r/coerce-to :array))
-             :reply-count (r/count replies-base-q)
+            {:reply-count (r/count replies-base-q)
              ;; Date of the last added comment on this thread
              :last-activity-at (-> replies-base-q
                                 (r/max :created-at)


Delete media driver directory via shutdown hook Covers cases where component isn't stopped

--- src/onyx/messaging/aeron.clj
+++ src/onyx/messaging/aeron.clj
@@ -204,6 +204,10 @@
           subscribers (mapv (fn [stream-id]
                               (start-subscriber! bind-addr port stream-id virtual-peers decompress-f receive-idle-strategy))
                             (range subscriber-count))]
+      (.addShutdownHook (Runtime/getRuntime)
+                        (Thread. (fn []
+                                   (.deleteAeronDirectory ^MediaDriver$Context media-driver-context))))
+
       (assoc component
              :bind-addr bind-addr
              :external-addr external-addr


manage client side routes on server side

--- src/rrm/core.clj
+++ src/rrm/core.clj
@@ -32,6 +32,37 @@
 (defroutes app-routes
   (GET "/" [] home)
   (GET "/citizens" [] normal-user)
+  (GET "/login" [] home)
+  (GET "/mutations" [] home)
+  (GET "/mutations/update/:id" [id] home)
+  (GET "/mutations/add" [] home)
+  (GET "/revenue" [] home)
+  (GET "/revenue/add" [] home)
+  (GET "/revenue/update/:id" [id] home)
+  (GET "/khasragirdwani" [] home)
+  (GET "/khasragirdwani/add" [] home)
+  (GET "/khasragirdwani/update/:id" [id] home)
+  (GET "/masavi" [] home)
+  (GET "/masavi/add" [] home)
+  (GET "/masavi/update/:id" [id] home)
+  (GET "/consolidation" [] home)
+  (GET "/consolidation/add" [] home)
+  (GET "/consolidation/update/:id" [id] home)
+  (GET "/fieldbook" [] home)
+  (GET "/fieldbook/add" [] home)
+  (GET "/fieldbook/update/:id" [id] home)
+  (GET "/misc" [] home)
+  (GET "/misc/add" [] home)
+  (GET "/misc/update/:id" [] home)
+  (GET "/o2register" [] home)
+  (GET "/o2register/add" [] home)
+  (GET "/o2register/update/:id" [id] home)
+  (GET "/o4register" [] home)
+  (GET "/o4register/add" [] home)
+  (GET "/o4register/update/:id" [id] home)
+  (GET "/o6register" [] home)
+  (GET "/o6register/add" [] home)
+  (GET "/o6register/update/:id" [id] home)
   (route/resources "/static")
   (route/not-found "
Page not found
"))

@@ -46,5 +77,5 @@
 (defn -main
   "Record Room Management System "
   [& args]
-  (jetty/run-jetty app {:port 8080
+  (jetty/run-jetty app {:port 8193
                         :join? false}))


fix closing brace and paren

fix closing brace and paren

--- src/clj/game/cards-ice.clj
+++ src/clj/game/cards-ice.clj
@@ -656,7 +656,7 @@
                 {:msg "look at the top card of R&D"
                  :optional {:prompt (msg "Add " (:title (first (:deck corp))) " to bottom of R&D?")
                             :msg "add the top card of R&D to the bottom"
-                            :effect (effect (move (first (:deck corp)) :deck))}}]}}
+                            :effect (effect (move (first (:deck corp)) :deck))}}]}

    "Zed 1.0"
-   {:abilities [{:msg "do 1 brain damage" :effect (effect (damage :brain 1 {:card card}))}]})
+   {:abilities [{:msg "do 1 brain damage" :effect (effect (damage :brain 1 {:card card}))}]}})


use watch state for Resistor strength

use watch state for Resistor strength

--- src/clj/game/cards-ice.clj
+++ src/clj/game/cards-ice.clj
@@ -738,7 +738,14 @@
    {:abilities [end-the-run]}

    "Resistor"
-   {:strength-bonus (req (get-in @state [:runner :tag]))
+   {:effect (req (add-watch state (keyword (str "resistor" (:cid card)))
+                   (fn [k ref old new]
+                     (let [tags (get-in new [:runner :tag])]
+                       (when (not= (get-in old [:runner :tag]) tags)
+                         (update! ref side (assoc (get-card ref card) :strength-bonus tags))
+                         (update-ice-strength ref side (get-card ref card)))))))
+    :strength-bonus (req (:tag runner))
+    :leave-play (req (remove-watch state (keyword (str "resistor" (:cid card)))))
     :abilities [(trace-ability 4 end-the-run)]}

    "Rototurret"


Performance: Do not use hiccup to generate popover HTML

--- src/main/hbase_region_inspector/core.clj
+++ src/main/hbase_region_inspector/core.clj
@@ -9,7 +9,7 @@
             [ring.middleware.gzip :refer [wrap-gzip]]
             [compojure.core :refer [defroutes GET PUT routes wrap-routes]]
             [compojure.route :as route]
-            [hiccup.core :as h]
+            [hiccup.util :refer [escape-html]]
             [selmer.parser :refer [render-file]]
             [hbase-region-inspector.hbase :as hbase]
             [hbase-region-inspector.util :as util]
@@ -73,22 +73,24 @@
   [title keys props]
   (let [has-locality (:has-locality @cached)
         {:keys [table encoded-name]} props]
-    (h/html
+    (str
       title
-      [:table {:class "table table-condensed table-striped"}
-       [:tbody
-        (map #(let [[k v] (format-val % (% props) props)]
-                [:tr [:th {:class "col-xs-2"} k] [:td v]])
-             (filter #(and (% props)
-                           ;; Ignore locality if not available
-                           (or has-locality (not= % :locality))) keys))]])))
+      "

"
+      (apply str
+             (map #(let [[k v] (format-val % (% props) props)]
+                     (str "
" k "	" (escape-html v) "
"))
+                  (filter #(and (% props)
+                                ;; Ignore locality if not available
+                                (or has-locality (not= % :locality))) keys)))
+      "

")))

 (defn build-region-popover
   "Builds a small HTML snippet for each region to be used in bootstrap popover"
   [props]
   (let [{:keys [table encoded-name]} props]
     (build-popover
-      [:h3 table " " [:small encoded-name]]
+      (str "
" (escape-html table)
+           " " (escape-html encoded-name) "
")
       [:server
        :start-key :end-key
        :store-file-size-mb
@@ -105,7 +107,7 @@
   "Builds a small HTML snippet for each server to be used in bootstrap popover"
   [props]
   (build-popover
-    [:h3 (:name props)]
+    (str "
" (escape-html (:name props)) "
")
     [:regions
      :store-files
      :store-file-size-mb
@@ -119,7 +121,7 @@
   "Builds a small HTML snippet for each table to be used in bootstrap popover"
   [props]
   (build-popover
-    [:h3 (:name props)]
+    (str "
" (escape-html (:name props)) "
")
     [:regions
      :store-files
      :store-file-size-mb
@@ -198,12 +200,12 @@
                            #(reduce - 0 (map metric (val %)))
                            (group-by :table all-regions)))

-        ;; Tables to show
-        visible-tables (set (if (seq tables) tables all-tables))
-
         ;; Filter regions by table name
         visible-regions (map byte-buffers->str
-                             (filter #(visible-tables (:table %)) all-regions))
+                             (if (seq tables)
+                               (let [tables (set tables)]
+                                 (filter #(tables (:table %)) all-regions))
+                               all-regions))

         ;; Group by server, sort the pairs, build a list of maps with :name and :regions
         grouped (map #(zipmap [:name :regions] %)
@@ -211,13 +213,14 @@
                               (merge (zipmap (keys servers) (repeat []))
                                      (group-by :server visible-regions))))
         ;; Function to sort the regions in the descending order
+        all-tables-ordered (zipmap all-tables (iterate inc 0))
         score-fn #(vector (- (metric %))
-                          (.indexOf all-tables (:table %)))
+                          (all-tables-ordered (:table %)))
         sort-fn (if (= sort :metric)
                   (fn [regions] (sort-by score-fn regions))
                   (fn [regions] (sort-by (comp vec reverse score-fn) regions)))
         ;; Sort the regions in each server
-        grouped (pmap #(update % :regions sort-fn) grouped)
+        grouped (map #(update % :regions sort-fn) grouped)
         ;; Find the local sum of the metric of each region
         grouped (map #(assoc % :sum (reduce + (filter pos? (map metric (:regions %)))))
                      grouped)
@@ -326,14 +329,16 @@
                           new-val (metric region)
                           old-val (or (get-in old-regions [name metric]) new-val)]
                       (/ (- new-val old-val) interval 0.001))))
-        new-regions (pmap #(assoc
-                             %
-                             :requests-rate       (diff-fn % :requests)
-                             :write-requests-rate (diff-fn % :write-requests)
-                             :read-requests-rate  (diff-fn % :read-requests)
-                             :compaction          ((juxt :compacted-kvs :total-compacting-kvs) %))
+        new-regions (pmap #(let [updated
+                                 (assoc
+                                   %
+                                   :requests-rate       (diff-fn % :requests)
+                                   :write-requests-rate (diff-fn % :write-requests)
+                                   :read-requests-rate  (diff-fn % :read-requests)
+                                   :compaction          ((juxt :compacted-kvs
+                                                               :total-compacting-kvs) %))]
+                             (assoc updated :html (build-region-popover updated)))
                           new-regions)
-        new-regions (pmap #(assoc % :html (build-region-popover %)) new-regions)
         group-by-server (group-by :server new-regions)
         servers (into {} (for [[k v] servers]
                            (let [v (merge v (calculate-locality (group-by-server k)))]


Added to the implementation of call, with an explanation.

--- src/clj/minijava/munch.clj
+++ src/clj/minijava/munch.clj
@@ -112,16 +112,29 @@
 (defmethod munchMap [:minijava.ir/NoOp]
   [x value]
   	nil)
+
+
+

 (defmethod munchMap [:minijava.ir/Call :minijava.ir/Label clojure.lang.IPersistentList]
   [x label args]
   	;;munch the arguments into temps.
-  	(let [formals (apply munch args)]
-  			;;is there any code we have to insert before or after the call (or will this be taken care of after liveness analysis/register selection)?
-  			 (emit (call (munch label)))
-  			 ;;want to return the return value as a temp here from this function
-  	(Temp (tm/temp :eax)))) ;;is this the right way to do this?
-
+  	(let [formals (apply munch args) ;;where do the temps from these formals end up?
+  	;;According to the book, we aren't going to use these temps explicitly here (in any emited x86). But register allocation will
+  	;;later determine which ones to put into registers and which to put into the stack, and
+  	;;at that point the appropriate movl code will be inserted here.
+  	;;however we still have two things that we will have to do (for stage 5 or 6, so not required yet):
+  	;;we need to designate these temps as 'sources' of the call isntruction (the books terminology) so that
+  	;;liveness analysis recognizes these temps as live during the function call,
+  	;;and secondly, we will need to faciliate the connection between these temps and the equivelent temps
+  	;;in the function itself.
+  				ret (Temp (tm/temp))]
+  			 (emit (call (munch label)))
+  			 (emit (movl  (Temp :eax) ret))
+  			 ;;want to return the return value as a temp from this function.
+  			 ;;liveness analysis will probably remove this movl instruction later, but for now, thats what we'll do.
+  			 ;;this depends upon the convention that return values always go in eax, so we can pre-color the temp above.
+  	ret))

 ;; Constant operands can be compiled out into a CONST
 (defmethod munchMap [:minijava.ir/BinaryOp :+ :minijava.ir/Const  :minijava.ir/Const]


refine lot layout

refine lot layout

--- src/clj_money/web/lots.clj
+++ src/clj_money/web/lots.clj
@@ -27,26 +27,45 @@
   [:tr
    [:td.text-right (-> record :trade-date format-date)]
    [:td.text-right (format "%s%s"
-                           (if (= :buy (:action record)) "+" "-")
+                           (if (= :buy (:action record)) "+ " "- ")
                            (-> record :shares format-number))]
    [:td.text-right (-> record :price format-number)]
-   [:td {:colspan 4} " "]
-   [:td
+   [:td.text-right (-> record :value format-number)]
+   [:td.text-right (-> record :gain format-number)]
+   [:td.text-center
     [:div.btn-group
-     (when (= :sell (:action record))
+     (if (= :buy (:action record))
        (glyph-button :remove
-                     (format "/transactions/%s/unsell" (-> record :transaction-id))
+                     (format "/transactions/%s/unbuy" (:transaction-id record))
+                     {:size :extra-small
+                      :data-method :post
+                      :data-confirm "Are you sure you want to undo this purchase?"
+                      :level :danger
+                      :title "Click here to undo this purchase"})
+       (glyph-button :remove
+                     (format "/transactions/%s/unsell" (:transaction-id record))
                      {:size :extra-small
                       :data-method :post
                       :data-confirm "Are you sure you want to undo this sale?"
                       :level :danger
                       :title "Click here to undo this sale."}))]]])

+(defn- lot-transactions-table
+  [records]
+  [:table.table.table-striped
+   [:tr
+    [:th.text-right "Trade Date"]
+    [:th.text-right "Shares"]
+    [:th.text-right "Price"]
+    [:th.text-right "Value"]
+    [:th.text-right "Gain"]
+    [:th.text-right " "]]
+   (map lot-transaction-row records)])
+
 (defn- lot-row
   [record]
   (html
     [:tr
-     [:td.text-right (-> record :purchase-date format-date)]
      [:td.text-right (-> record :shares-owned format-number)]
      [:td.text-right (-> record :purchase-price format-number)]
      [:td.text-right (-> record :current-price format-number)]
@@ -54,17 +73,25 @@
      [:td.text-right (-> record :value format-number)]
      [:td.text-right
       {:class (if (<= 0 (:gain record)) "gain" "loss")}
-      (-> record :gain format-number)]
-     [:td
-      [:div.btn-group
-       (glyph-button :remove
-                     (format "/transactions/%s/unbuy" (-> record :lot-transactions first :transaction-id))
-                     {:size :extra-small
-                      :data-method :post
-                      :data-confirm "Are you sure you want to undo this purchase?"
-                      :level :danger
-                      :title "Click here to undo this purchase"})]]]
-    (map lot-transaction-row (:lot-transactions record))))
+      (-> record :gain format-number)]]))
+
+(defn- lot-section
+  [record]
+  (html
+    [:div.row
+     [:div.col-sm-12
+      [:table.table.table-striped
+       [:tr
+        [:th.text-right "Shares Owned"]
+        [:th.text-right "Purchase Price"]
+        [:th.text-right "Current Price"]
+        [:th.text-right "Cost"]
+        [:th.text-right "Value"]
+        [:th.text-right "Gain"]]
+       (lot-row record)]]]
+    [:div.row
+     [:div.col-sm-10.col-sm-offset-2
+      (lot-transactions-table (:lot-transactions record))]]))

 (defn index
   [{{:keys [account-id commodity-id]} :params}]
@@ -72,24 +99,7 @@
         commodity (commodities/find-by-id (env :db) (Integer. commodity-id))
         records (reports/lot-report (env :db) (:id account) (:id commodity))]
     (with-lots-layout (format "Lots of %s in %s" (:symbol commodity) (:name account)) (:entity-id account) {}
-      [:table.table.table-striped
-       [:tr
-        [:th.text-right "Purchase Date"]
-        [:th.text-right "Shares Owned"]
-        [:th.text-right "Purchase Price"]
-        [:th.text-right "Current Price"]
-        [:th.text-right "Cost"]
-        [:th.text-right "Value"]
-        [:th.text-right "Gain"]
-        [:th.text-right " "]]
-       (html
-         (map lot-row records)
-         [:tr.report-summary
-          [:td.text-right {:colspan 2} "shares"]
-          [:td.text-right {:colspan 3} "cost"]
-          [:td.text-right "value"]
-          [:td.text-right "gain"]
-          [:td " "]])]
+      (map lot-section records)
       [:a.btn.btn-default {:href (format "/accounts/%s" (:id account))
                            :title "Click here to return to the account page"}
        "Back"])))


Rendering markdown for the thoughts

Rendering markdown for the thoughts

Currently setting it with the ominous dangerouslySetInnerHTML. I'm
cleaning up any tags, so it should be safe to render, but I may want to
find a different approach like requesting the backend returns hiccup
(and render it there).

--- src/cljs/memento/core.cljs
+++ src/cljs/memento/core.cljs
@@ -7,10 +7,38 @@
             [goog.events :as events]
             [goog.history.EventType :as EventType]
             [markdown.core :refer [md->html]]
+            [markdown.transformers :as transformers]
             [ajax.core :refer [GET POST]])
   (:require-macros [reagent.ratom :refer [reaction]])
   (:import goog.History))

+
+;;;;------------------------------
+;;;; Data and helpers
+;;;;------------------------------
+
+;; Transformer vector. We are excluding headings, since we use the hash as tags.
+(def md-transformers
+  [transformers/empty-line
+   transformers/codeblock
+   transformers/code
+   transformers/escaped-chars
+   transformers/inline-code
+   transformers/autoemail-transformer
+   transformers/autourl-transformer
+   transformers/link
+   transformers/reference-link
+   transformers/hr
+   transformers/li
+   transformers/italics
+   transformers/em
+   transformers/strong
+   transformers/bold
+   transformers/strikethrough
+   transformers/superscript
+   transformers/blockquote
+   transformers/paragraph
+   transformers/br])

 ;;;;------------------------------
@@ -342,7 +370,7 @@
           (for [memory @results]
             ^{:key (:id memory)}
             [:blockquote
-             [:p (:thought memory)]
+             [:p {:dangerouslySetInnerHTML {:__html (md->html (:thought memory) :replacement-transformers md-transformers)}}]
              [:small (:created memory)]]
             ))
         [memory-pager]


Use file separator for SQL resource path

--- src/clojars/db/migrate.clj
+++ src/clojars/db/migrate.clj
@@ -2,14 +2,15 @@
   (:require [clojure.java.jdbc :as sql]
             [clojure.java.io :as io]
             [clojars.config :refer [config]])
-  (:import (java.sql Timestamp)))
+  (:import (java.sql Timestamp)
+           (java.io File)))

 (defn initial-schema [trans]
-  (doseq [cmd (.split (slurp (io/resource "queries/clojars.sql")) ";\n\n")]
+  (doseq [cmd (.split (slurp (io/resource (str "queries" (File/separator) "clojars.sql"))) ";\n\n")]
     ;; needs to succeed even if tables exist since this migration
     ;; hasn't been recorded in extant DBs before migrations were introduced
     (try (sql/db-do-commands trans cmd)
-         (catch java.sql.BatchUpdateException _))))
+         (catch java.sql.BatchUpdateException _)))) ;; TODO: should we really be swallowing exceptions here?

 (defn add-promoted-field [trans]
   (sql/db-do-commands trans "ALTER TABLE jars ADD COLUMN promoted_at DATE"))


ignore-trailing-slash

ignore-trailing-slash

--- src/clojure/nossal/app.clj
+++ src/clojure/nossal/app.clj
@@ -8,8 +8,17 @@
             [ring.adapter.jetty :as jetty]
             [ring.util.response :as response]
             [environ.core :refer [env]]
-            [clojure.java.io :as io]))
+            [clojure.java.io :as io])
+  (use clojure.string))

+
+(defn ignore-trailing-slash [handler]
+  (fn [request]
+    (let [uri (:uri request)]
+      (handler (assoc request :uri (if (and (not (= "/" uri))
+                                            (ends-with? uri "/"))
+                                     (subs uri 0 (dec (count uri)))
+                                     uri))))))

 (defn service-worker [mod]
   (response/resource-response (str "sw.js" mod) {:root "public/js"}))
@@ -51,10 +60,12 @@
     (route/not-found (slurp (io/resource "404.html")))))

-(def app (wrap-defaults #'app-routes site-defaults))
+(def app
+  (-> app-routes
+      (wrap-defaults site-defaults)
+      (ignore-trailing-slash)))

-
-(def dev-app (wrap-reload (wrap-defaults #'app-routes site-defaults)))
+(def dev-app (wrap-reload app))

 (defn -main [& [port]]
   (let [port (Integer. (or port (env :port) 3000))]


Improved (rand-map) and docs.

Improved (rand-map) and docs.

--- src/clojure_robby/core.clj
+++ src/clojure_robby/core.clj
@@ -9,11 +9,11 @@
 (def map-size 20) ; Size of the map used for robot simulation.
 (def gold-prob 10) ; Probability in 100 that a tile contains gold.
 (def simul-steps 100) ; Steps to allow the robot to make in a simulation.
-(def tiles [\w \p \g]) ; Tiles that populate the map.
-(def actions [\u \d \l \r \p]) ; Actions the robot can take.
+(def tiles [\w \p \g]) ; Tiles that populate the map: wall, path, and gold.
+(def actions [\u \d \l \r \p]) ; Actions the robot can take: up, down, left, right, pick up.

-; DNA functios
+; DNA functions
 (defn rand-dna []
   "Initializes a vector of random DNA."
   (defn rand-gene []
@@ -22,23 +22,23 @@

 (defn cross [a b]
   "Crosses two vectors of DNA."
-  (defn choose-rand [a b]
-    (if (< (rand-int 100) 50) a b))
+  (defn choose-rand [x y]
+    (if (< (rand-int 100) 50) x y))
   (map choose-rand a b))

 ; Fitness evaluation functions
 (defn rand-map []
   "Initializes a map with walls at the boundaries and randomly positioned gold."
-  (def insides (- map-size 2))
-  (def wall-row (vec (repeat map-size \w)))
-  (defn rand-tile []
-    (if (< (rand-int 100) gold-prob) \g \p))
-  (defn rand-row []
-    (vec (concat [\w] (repeatedly insides rand-tile) [\w])))
-  (vec (concat [wall-row] (repeatedly insides rand-row) [wall-row])))
+  (defn gen-tile [x y]
+    (def last-coord(- map-size 1))
+    (if (or (= x 0) (= y 0) (= x last-coord) (= y last-coord))
+      \w
+      (if (< (rand-int 100) gold-prob) \g \p)))
+  (map (fn [y] (map (fn [x] (gen-tile x y)) (range map-size))) (range map-size)))

 (defn on-index [themap x y]
+  "Given a map and coordinates, evaluates to what is on the map at the position."
   (nth (nth themap y) x))

 ;(defn simulate [dna onmap]


Refactored compojure.response

Refactored compojure.response

--- src/compojure/response.clj
+++ src/compojure/response.clj
@@ -1,6 +1,6 @@
 (ns compojure.response
   "Methods for generating Ring response maps"
-  (:use [ring.util.response :only (response header)])
+  (:use [ring.util.response :only (response content-type)])
   (:import [java.io File InputStream]
            [clojure.lang APersistentMap IDeref IFn ISeq]))

@@ -8,39 +8,25 @@
   (render [this request]
     "Render the object into a form suitable for the given request map."))

-(extend-type nil
-  Renderable
-  (render [_ _] nil))
-
-(extend-type String
-  Renderable
+(extend-protocol Renderable
+  nil
+  (render [_ _] nil)
+  String
   (render [this _]
     (-> (response this)
-        (header "Content-Type" "text/html"))))
-
-(extend-type APersistentMap
-  Renderable
+        (content-type "text/html")))
+  APersistentMap
   (render [this _]
-    (merge (response "") this)))
-
-(extend-type IFn
-  Renderable
+    (merge (response "") this))
+  IFn
   (render [this request]
-    (render (this request) request)))
-
-(extend-type IDeref
-  Renderable
+    (render (this request) request))
+  IDeref
   (render [this request]
-    (render (deref this) request)))
-
-(extend-type File
-  Renderable
+    (render (deref this) request))
+  File
+  (render [this _] (response this))
+  ISeq
+  (render [this _] (response this))
+  InputStream
   (render [this _] (response this)))
-
-(extend-type ISeq
-  Renderable
-  (render [this _] (response this)))
-
-(extend-type InputStream
-  Renderable
-  (render [this _] (response this)))


rename namespaced keyword to reflect previous ns move. Fixes #136

--- src/overtone/helpers/lib.clj
+++ src/overtone/helpers/lib.clj
@@ -324,7 +324,7 @@
   [gen]
   (if (and (associative? gen)
            (or (= :overtone.sc.machinery.ugen.fn-gen/ugen (:type gen))
-               (= :overtone.sc.machinery.defcgen/cgen (:type gen))))
+               (= :overtone.sc.defcgen/cgen (:type gen))))
     (keyword (:name gen))
         gen))

@@ -361,4 +361,4 @@
                   clauses)]
     (get (apply hash-map clauses)
          (eval e)
-         default)))+         default)))


encode user-input search terms when sending to server (#539)

--- src/cljs/org/broadinstitute/firecloud_ui/common/entity_table.cljs
+++ src/cljs/org/broadinstitute/firecloud_ui/common/entity_table.cljs
@@ -112,7 +112,7 @@
                {:endpoint (endpoints/get-entities-paginated (:workspace-id props) type
                                                             {"page" current-page
                                                              "pageSize" rows-per-page
-                                                             "filterTerms" filter-text
+                                                             "filterTerms" (js/encodeURIComponent filter-text)
                                                              "sortField" sort-field
                                                              "sortDirection" (name sort-order)})
                 :on-done (fn [{:keys [success? get-parsed-response status-text status-code]}]


bump to 0.5.7-SNAPSHOT

bump to 0.5.7-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clj-http "0.5.6"
+(defproject clj-http "0.5.7-SNAPSHOT"
   :description "A Clojure HTTP library wrapping the Apache HttpComponents client."
   :url "https://github.com/dakrone/clj-http/"
   :license {:name "The MIT License"


Upgrade to 0.9.9.

Upgrade to 0.9.9.

--- project.clj
+++ project.clj
@@ -1,10 +1,10 @@
-(defproject workshop "0.9.8"
+(defproject workshop "0.9.9"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[org.clojure/clojure "1.8.0"]
                  [org.clojure/core.async "0.2.374"]
                  ^{:voom {:repo "git@github.com:onyx-platform/onyx.git" :branch "master"}}
-                 [org.onyxplatform/onyx "0.9.8"]
+                 [org.onyxplatform/onyx "0.9.9"]
                  [org.slf4j/slf4j-api "1.7.12"]
                  [org.slf4j/slf4j-nop "1.7.12"]]
   :profiles {:dev {:dependencies [[org.clojure/tools.namespace "0.2.10"]


Release: updated versions.

Release: updated versions.

--- project.clj
+++ project.clj
@@ -15,7 +15,7 @@
        ns
        "\u001B[35m]\u001B[33m λ\u001B[m=> "))

-(defproject gov.nasa.earthdata/cmr-metadata-proxy "0.1.2-SNAPSHOT"
+(defproject gov.nasa.earthdata/cmr-metadata-proxy "0.1.2"
   :description ~(str "A library that provides convenience functions for "
                      "accessing and locally caching CMR metadata (granules, "
                      "collections, variables, services, etc.)")
@@ -29,12 +29,12 @@
     [clojusc/twig "0.4.0"]
     [com.stuartsierra/component "0.3.2"]
     [environ "1.1.0"]
-    [gov.nasa.earthdata/cmr-authz "0.1.1-SNAPSHOT"]
-    [gov.nasa.earthdata/cmr-exchange-common "0.2.1-SNAPSHOT"]
-    [gov.nasa.earthdata/cmr-exchange-query "0.2.0-SNAPSHOT"]
-    [gov.nasa.earthdata/cmr-http-kit "0.1.5-SNAPSHOT"]
-    [gov.nasa.earthdata/cmr-mission-control "0.1.0-SNAPSHOT"]
-    [metosin/ring-http-response "0.9.0"]
+    [gov.nasa.earthdata/cmr-authz "0.1.1"]
+    [gov.nasa.earthdata/cmr-exchange-common "0.2.2"]
+    [gov.nasa.earthdata/cmr-exchange-query "0.2.0"]
+    [gov.nasa.earthdata/cmr-http-kit "0.1.5"]
+    [gov.nasa.earthdata/cmr-mission-control "0.1.0"]
+    [metosin/ring-http-response "0.9.1"]
     [org.clojure/clojure "1.9.0"]
     [org.clojure/core.async "0.4.474"]
     [org.clojure/core.cache "0.7.1"]]
@@ -48,7 +48,7 @@
       :source-paths ["test"]}
     :security {
       :plugins [
-        [lein-nvd "0.5.5"]]
+        [lein-nvd "0.5.6"]]
       :source-paths ^:replace ["src"]
       :nvd {
         :suppression-file "resources/security/false-positives.xml"}
@@ -67,7 +67,7 @@
         [commons-io "2.6"]]}
     :system {
       :dependencies [
-        [clojusc/system-manager "0.3.0-SNAPSHOT"]]}
+        [clojusc/system-manager "0.3.0"]]}
     :local {
       :dependencies [
         [org.clojure/tools.namespace "0.2.11"]


update district-server-web3-watcher

update district-server-web3-watcher

--- project.clj
+++ project.clj
@@ -34,7 +34,7 @@
                  [district0x/district-server-logging "1.0.1"]
                  [district0x/district-server-smart-contracts "1.0.1"]
                  [district0x/district-server-web3 "1.0.1"]
-                 [district0x/district-server-web3-watcher "1.0.1"]
+                 [district0x/district-server-web3-watcher "1.0.2"]

                  ;; d0xINFRA temporary here
                  [akiroz.re-frame/storage "0.1.2"]


Update obb-rules

Update obb-rules


Add Onyx Dashboard to release targets.

Add Onyx Dashboard to release targets.

--- project.clj
+++ project.clj
@@ -76,5 +76,10 @@
      :branch "compatibility"
      :release-branch "master"
      :release-script "scripts/release.sh"
+     :merge "master"}
+    {:git "git@onyx-dashboard:onyx-platform/onyx-dashboard.git"
+     :branch "compatibility"
+     :release-branch "master"
+     :release-script "scripts/release.sh"
      :merge "master"}]}
   :codox {:output-dir "doc/api"})


upgrading sqlite driver version

upgrading sqlite driver version

--- project.clj
+++ project.clj
@@ -23,7 +23,7 @@
                  ;; db drivers
                  [mysql/mysql-connector-java "5.1.35"]
                  [postgresql/postgresql "9.1-901-1.jdbc4"]
-                 [org.xerial/sqlite-jdbc "3.8.7"]
+                 [org.xerial/sqlite-jdbc "3.8.11.2"]
                  [org.clojure/data.csv "0.1.2"]

                  ;; command line


Don't use :async devtools feature

Don't use :async devtools feature

--- project.clj
+++ project.clj
@@ -67,7 +67,7 @@
                         :source-paths ["dev-src" "src"]
                         :figwheel     {:on-jsload     "re-demo.core/mount-demo"}
                         :compiler     {:preloads        [devtools.preload day8.app.dev-preload]
-                                       :external-config {:devtools/config {:features-to-install :all}}
+                                       :external-config {:devtools/config {:features-to-install [:formatters :hints]}}
                                        :output-to       "run/resources/public/compiled_dev/demo.js"
                                        :output-dir      "run/resources/public/compiled_dev/demo"
                                        :main            "re-demo.core"
@@ -86,7 +86,7 @@
                        {:id           "test"
                         :source-paths ["dev-src" "src/re_com" "test"]
                         :compiler     {:preloads        [devtools.preload day8.app.dev-preload]
-                                       :external-config {:devtools/config {:features-to-install :all}}
+                                       :external-config {:devtools/config {:features-to-install [:formatters :hints]}}
                                        :output-to       "run/test/compiled/test.js"
                                        :output-dir      "run/test/compiled/test"
                                        :source-map      true


Update dependencies.

Update dependencies.

--- project.clj
+++ project.clj
@@ -4,7 +4,7 @@
   :license {:name "Apache 2.0"
             :url "http://www.apache.org/licenses/LICENSE-2.0"}
   :dependencies [[org.clojure/clojure "1.8.0" :scope "provided"]
-                 [buddy/buddy-core "1.0.0"]
+                 [buddy/buddy-core "1.1.1"]
                  [clojurewerkz/scrypt "1.2.0"]]
   :source-paths ["src/clojure"]
   :java-source-paths ["src/java"]


Version 0.3.4-SNAPSHOT

Version 0.3.4-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,7 +1,7 @@
 (def tk-version "1.2.0")
 (def ks-version "1.2.0")

-(defproject puppetlabs/trapperkeeper-status "0.3.3"
+(defproject puppetlabs/trapperkeeper-status "0.3.4-SNAPSHOT"
   :description "A trapperkeeper service for getting the status of other trapperkeeper services."
   :url "https://github.com/puppetlabs/trapperkeeper-status"
   :license {:name "Apache License, Version 2.0"


Version 0.0.18

Version 0.0.18

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject pe-fp-core "0.0.18-SNAPSHOT"
+(defproject pe-fp-core "0.0.18"
   :description "A Clojure library encapsulating the various domain objects associated with the fuel purchase application."
   :url "https://github.com/evanspa/pe-fp-core"
   :license {:name "MIT"


Upgraded clj->1.10.0, cljs->1.10.449, sente->1.13.1, reagent->0.8.1

And:
min-lein-version->2.8.3
figwheel->0.5.18
core.async->0.4.490
component->0.4.0
environ->1.1.0
logback-classic->1.2.3
tools.logging->0.4.1
ring-core->1.7.1
ring-defaults->0.3.2
compojure->1.6.1
http-kit->2.4.0-alpha2
transit-clj->0.8.313
transit-cljs->0.8.256
bootstrap->4.2.1
tools.namespace->0.3.0-alpha4

TODO: Figure out which deps to remove

--- project.clj
+++ project.clj
@@ -1,30 +1,30 @@
-(defproject rente "1.0.0"
+(defproject rente "1.1"
   :description "A barebones Reagent+Sente app deployable to Heroku. Uses Figwheel (for development build) and Component (lifecycle management)."
   :url "http://enterlab.com"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
-  :min-lein-version "2.5.3"
-  :dependencies [[org.clojure/clojure "1.8.0"]
-                 [org.clojure/clojurescript "1.9.93"]
-                 [org.clojure/core.async "0.2.385"]
-                 [com.stuartsierra/component "0.3.1"]
-                 [environ "1.0.3"]
-                 [ch.qos.logback/logback-classic "1.1.7"]
-                 [org.clojure/tools.logging "0.3.1"]
+  :min-lein-version "2.8.3"
+  :dependencies [[org.clojure/clojure "1.10.0"]
+                 [org.clojure/clojurescript "1.10.439"]
+                 [org.clojure/core.async "0.4.490"]
+                 [com.stuartsierra/component "0.4.0"]
+                 [environ "1.1.0"]
+                 [ch.qos.logback/logback-classic "1.2.3"]
+                 [org.clojure/tools.logging "0.4.1"]

-                 [ring/ring-core "1.5.0"]
-                 [ring/ring-defaults "0.2.1"]
-                 [compojure "1.5.1"]
-                 [http-kit "2.1.19"]
+                 [ring/ring-core "1.7.1"]
+                 [ring/ring-defaults "0.3.2"]
+                 [compojure "1.6.1"]
+                 [http-kit "2.4.0-alpha2"]

-                 [com.taoensso/sente "1.9.0"]
-                 [com.cognitect/transit-clj "0.8.285"]
-                 [com.cognitect/transit-cljs "0.8.239"]
+                 [com.taoensso/sente "1.13.1"]
+                 [com.cognitect/transit-clj "0.8.313"]
+                 [com.cognitect/transit-cljs "0.8.256"]

-                 [reagent "0.6.0-rc"]
-                 [org.webjars/bootstrap "4.0.0-alpha"]]
+                 [reagent "0.8.1"]
+                 [org.webjars/bootstrap "4.2.1"]]

-  :plugins [[lein-cljsbuild "1.1.1"]]
+  :plugins [[lein-cljsbuild "1.1.7"]]

   :source-paths ["src"]
   :resource-paths ["resources" "resources-index/prod"]
@@ -42,11 +42,11 @@
   :profiles {:dev-config {}

              :dev [:dev-config
-                   {:dependencies [[org.clojure/tools.namespace "0.2.10"]
-                                   [figwheel "0.5.4-7"]]
+                   {:dependencies [[org.clojure/tools.namespace "0.3.0-alpha4"]
+                                   [figwheel "0.5.18"]]

-                    :plugins [[lein-figwheel "0.5.4-7"]
-                              [lein-environ "1.0.1"]]
+                    :plugins [[lein-figwheel "0.5.18"]
+                              [lein-environ "1.1.0"]]

                     :source-paths ["dev"]
                     :resource-paths ^:replace


Bump version.

Bump version.

--- project.clj
+++ project.clj
@@ -1,10 +1,10 @@
-(defproject com.mdrogalis/onyx-datomic "0.3.0-SNAPSHOT"
+(defproject com.mdrogalis/onyx-datomic "0.3.0"
   :description "Onyx plugin for Datomic"
   :url "https://github.com/MichaelDrogalis/onyx-datomic"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[org.clojure/clojure "1.6.0"]
-                 [com.mdrogalis/onyx "0.3.0-SNAPSHOT"]
+                 [com.mdrogalis/onyx "0.3.0"]
                  [com.datomic/datomic-free "0.9.4755"]]
   :profiles {:dev {:dependencies [[midje "1.6.2"]
                                   [org.hornetq/hornetq-core-client "2.4.0.Final"]]


json response middleware

json response middleware

--- project.clj
+++ project.clj
@@ -6,6 +6,7 @@
   :dependencies [[org.clojure/clojure "1.6.0"]
                  [ring/ring-core "1.3.2"]
                  [ring/ring-jetty-adapter "1.3.2"]
+                 [ring/ring-json "0.3.1"]
                  [compojure "1.3.1"]
                  [org.clojure/clojurescript "0.0-2511"]]
   :source-paths ["src/clj"


Upgrade integrity

Upgrade integrity

--- project.clj
+++ project.clj
@@ -20,7 +20,7 @@
                  [prismatic/schema "0.3.7"]
                  [schema-contrib "0.1.5"
                   :exclusions [instaparse]]
-                 [cddr/integrity "0.2.0-20140823.193326-1"
+                 [cddr/integrity "0.3.0-SNAPSHOT"
                   :exclusions [org.clojure/clojure]]
                  [org.clojure/core.typed "0.2.83"]


(maint) Bump to clj-parent 1.7.36

(maint) Bump to clj-parent 1.7.36

This commit updates clj-parent to 1.7.36, which updates postgresql to address a
security issue in pgjdbc driver. This issue does not affect puppetserver, but
updating for consistency with puppetdb.

--- project.clj
+++ project.clj
@@ -37,7 +37,7 @@

   :min-lein-version "2.7.1"

-  :parent-project {:coords [puppetlabs/clj-parent "1.7.35"]
+  :parent-project {:coords [puppetlabs/clj-parent "1.7.36"]
                    :inherit [:managed-dependencies]}

   :dependencies [[org.clojure/clojure]


Version 1.0.2-SNAPSHOT

Version 1.0.2-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject com.ninjakoala/lamarck "1.0.1"
+(defproject com.ninjakoala/lamarck "1.0.2-SNAPSHOT"
   :description "For classifying clouds (specifically Amazon's)"
   :url "https://github.com/ninjakoala/lamarck"
   :license {:name "Eclipse Public License"


(SERVER-1874) Update jruby 9k version to 9.1.15.0

--- project.clj
+++ project.clj
@@ -1,6 +1,6 @@
 (def ps-version "5.2.0-master-SNAPSHOT")
 (def jruby-1_7-version "1.7.27-1")
-(def jruby-9k-version "9.1.11.0-1")
+(def jruby-9k-version "9.1.15.0-2")

 (defn deploy-info
   [url]
@@ -64,7 +64,7 @@
                  ;; in different versions of the three different logback artifacts
                  [net.logstash.logback/logstash-logback-encoder]

-                 [puppetlabs/jruby-utils "0.10.0"]
+                 [puppetlabs/jruby-utils "0.11.2"]
                  [puppetlabs/jruby-deps ~jruby-1_7-version]

                  ;; JRuby 1.7.x and trapperkeeper (via core.async) both bring in


Add cheshire back for JSON support

Add cheshire back for JSON support

--- project.clj
+++ project.clj
@@ -4,6 +4,7 @@
   :license {:name "Eclipse Public License"
             :url "https://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[clj-http              "3.10.0"]
+                 [cheshire              "5.8.1"]
                  [clj-soup/clojure-soup "0.1.3"]]
   :profiles {:dev {}
              :1.8 {:dependencies [[org.clojure/clojure "1.8.0"]]}


Version 1.2.0-SNAPSHOT

Version 1.2.0-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.zalando.stups/friboo "1.1.2"
+(defproject org.zalando.stups/friboo "1.2.0-SNAPSHOT"
   :description "A utility library to write microservices in clojure."
   :url "https://github.com/zalando-stups/friboo"


(maint) Exclude :multithreaded-only tests by default

This commit updates the default test filter to exclude tests that are
tagged with `:multithreaded-only`, since those tests require the
`MULTITHREADED` env var to be set in order to work correctly.

--- project.clj
+++ project.clj
@@ -215,7 +215,8 @@
              :ci {:plugins [[lein-pprint "1.1.1"]
                             [lein-exec "0.3.7"]]}}

-  :test-selectors {:integration :integration
+  :test-selectors {:default (complement :multithreaded-only)
+                   :integration :integration
                    :unit (complement :integration)
                    :multithreaded (complement :single-threaded-only)
                    :singlethreaded (complement :multithreaded-only)}


start working on 1.6

start working on 1.6

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject quil "1.5.0"
+(defproject quil "1.6.0-SNAPSHOT"
   :description "(mix Processing Clojure)"
   :url "http://github.com/quil/quil"
   :mailing-list {:name "Quil Mailing List"


Upgrade clojuresript

Upgrade clojuresript

--- project.clj
+++ project.clj
@@ -26,7 +26,7 @@
                  [http-kit "2.1.18"]
                  [javax.servlet/servlet-api "2.5"]
                  [org.clojure/clojure "1.6.0"]
-                 [org.clojure/clojurescript "0.0-2261"]
+                 [org.clojure/clojurescript "0.0-2268"]
                  [org.clojure/core.async "0.1.303.0-886421-alpha"]
                  [org.clojure/tools.namespace "0.2.4"]
                  [org.clojure/tools.nrepl "0.2.3"]


Reformatted project.clj by zprint

Reformatted project.clj by zprint

--- project.clj
+++ project.clj
@@ -11,11 +11,11 @@
 ;

 (defproject org.clojars.tisnik/clj-calendar "0.3.0-SNAPSHOT"
-    :description "Set of functions for manipulating with Calendar(s)"
-    :url "http://example.com/FIXME"
-    :license {:name "Eclipse Public License"
-              :url "http://www.eclipse.org/legal/epl-v10.html"}
-    :dependencies [[org.clojure/clojure "1.8.0"]]
-    :plugins [[test2junit "1.1.0"]
-              [codox "0.8.11"]
-              [lein-cloverage "1.0.6"]])
+  :description "Set of functions for manipulating with Calendar(s)"
+  :url "http://example.com/FIXME"
+  :license {:name "Eclipse Public License",
+            :url "http://www.eclipse.org/legal/epl-v10.html"}
+  :dependencies [[org.clojure/clojure "1.8.0"]]
+  :plugins [[test2junit "1.1.0"]
+            [codox "0.8.11"]
+            [lein-cloverage "1.0.6"]])


Bump dependencies

Bump dependencies

--- project.clj
+++ project.clj
@@ -18,10 +18,10 @@
                  [ring-webjars "0.1.1"]
                  [ring/ring-defaults "0.2.1"]
                  [mount "0.1.10"]
-                 [cprop "0.1.8"]
+                 [cprop "0.1.9"]
                  [org.clojure/tools.cli "0.3.5"]
                  [luminus-nrepl "0.1.4"]
-                 [clj-http "3.1.0"]
+                 [clj-http "3.4.1"]
                  [org.apache.jena/jena-core "3.1.1"]
                  [org.apache.jena/jena-arq "3.1.1"]
                  [org.apache.jena/jena-querybuilder "3.1.1"]


update CIO

update CIO

--- project.clj
+++ project.clj
@@ -3,4 +3,4 @@
   :url "https://github.com/source-c/zlib-tiny"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
-  :dependencies [[commons-io "2.8.0"]])
+  :dependencies [[commons-io "2.10.0"]])