Begin 0.4.9-SNAPSHOT

Begin 0.4.9-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.pinkgorilla/gorilla-notebook "0.4.8"
+(defproject org.pinkgorilla/gorilla-notebook "0.4.9-SNAPSHOT"
   :description "A rich REPL for Clojure in the notebook style."
   :url "https://github.com/pink-gorilla/gorilla-notebook"
   :scm {:name "git" :url "https://github.com/pink-gorilla/gorilla-notebook"}


Update dependency.

Update dependency.

--- project.clj
+++ project.clj
@@ -10,7 +10,7 @@
     [org.clojure/clojure "1.6.0"] ; Lisp on the JVM http://clojure.org/documentation
     [org.clojure/core.incubator "0.1.3"] ; Functions proposed for inclusion in Clojure https://github.com/clojure/core.incubator
     [org.clojure/core.match "0.2.2"] ; Erlang-esque pattern matching https://github.com/clojure/core.match
-    [org.clojure/clojurescript "0.0-2311"] ; ClojureScript compiler https://github.com/clojure/clojurescript
+    [org.clojure/clojurescript "0.0-2322"] ; ClojureScript compiler https://github.com/clojure/clojurescript
     [org.clojure/tools.nrepl "0.2.4"] ; REPL server and client https://github.com/clojure/tools.nrepl
     [cheshire "5.3.1"] ; JSON de/encoding https://github.com/dakrone/cheshire
     [org.flatland/ordered "1.5.2"] ; Ordered hash map https://github.com/flatland/ordered


Prepare release v1.1.0

Prepare release v1.1.0

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject malesch/semantic-reagent "1.0.2-SNAPSHOT"
+(defproject malesch/semantic-reagent "1.1.0"
   :description "Library for using Semantic UI React components with Reagent"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}


Version 0.2.1-SNAPSHOT

Version 0.2.1-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject replumb/replumb "0.2.0"
+(defproject replumb/replumb "0.2.1-SNAPSHOT"
   :description "ClojureScript plumbing for your bootstrapped REPLs."
   :url "https://github.com/Lambda-X/replumb"
   :license {:name "Eclipse Public License"


Version 1.0.0

Version 1.0.0

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject dda/dda-backup-crate "1.0.0-SNAPSHOT"
+(defproject dda/dda-backup-crate "1.0.0"
   :description "A crate to handle backups"
   :url "https://www.domaindrivenarchitecture.org"
   :license {:name "Apache License, Version 2.0"


(maint) Bump hocon version support via clj-parent

 - Bumps clj-parent to 4.6.11 to pick up an updated typesafe/config
   version via typesafe 1.4.1 (from 1.2.0)

   Includes feature to load environment variables into lists
   like:

    FOO.1
    FOO.2

   More info is available at
   https://github.com/lightbend/config/blob/master/NEWS.md

   https://github.com/puppetlabs/clj-parent/pull/27

--- project.clj
+++ project.clj
@@ -1,5 +1,5 @@
 (def pdb-version "6.13.2-SNAPSHOT")
-(def clj-parent-version "4.6.8")
+(def clj-parent-version "4.6.11")

 (defn true-in-env? [x]
   (#{"true" "yes" "1"} (System/getenv x)))


Version 0.6.5

Version 0.6.5

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject lein-ancient "0.6.5-SNAPSHOT"
+(defproject lein-ancient "0.6.5"
   :description "Check your Projects for outdated Dependencies."
   :url "https://github.com/xsc/lein-ancient"
   :dependencies [[rewrite-clj "0.4.12"]


Release version 0.9.8.0.

Release version 0.9.8.0.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject onyx-cheat-sheet "0.9.8.0-SNAPSHOT"
+(defproject onyx-cheat-sheet "0.9.8.0"
   :description "Cheat sheet for Onyx"
   :url "https://github.com/onyx-platform/onyx-cheat-sheet"
   :license {:name "Eclipse Public License"
@@ -16,7 +16,7 @@
                  [compojure "1.4.0"]
                  [enlive "1.1.6"]
                  ^{:voom {:repo "git@github.com:onyx-platform/onyx.git" :branch "master"}}
-                 [org.onyxplatform/onyx "0.9.8-alpha1"]
+                 [org.onyxplatform/onyx "0.9.8"]
                  [prismatic/om-tools "0.4.0"]
                  [markdown-clj "0.9.77"]
                  [org.omcljs/om "0.9.0"]


Bump version

Bump version

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject reagent "1.0.0"
+(defproject reagent "1.1.0-SNAPSHOT"
   :url "http://github.com/reagent-project/reagent"
   :license {:name "MIT"}
   :description "A simple ClojureScript interface to React"


(maint) Bump tk-metrics to 1.2.2

(maint) Bump tk-metrics to 1.2.2

This version was released publicly to clojars.

1.2.1 was an internal-only release

--- project.clj
+++ project.clj
@@ -92,7 +92,7 @@
     ;; (logstash depends on jackson-databind)
     [com.fasterxml.jackson.core/jackson-databind "2.9.10"]
     ;; CVE-2020-7943
-    [puppetlabs/trapperkeeper-metrics "1.2.1" :exclusions [ring/ring-defaults org.slf4j/slf4j-api]]])
+    [puppetlabs/trapperkeeper-metrics "1.2.2" :exclusions [ring/ring-defaults org.slf4j/slf4j-api]]])

 ;; Don't use lein :clean-targets so that we don't have to repeat
 ;; ourselves, given that we need to remove some protected files, and
@@ -167,7 +167,6 @@
                     [puppetlabs/stockpile "0.0.4"]
                     [puppetlabs/tools.namespace "0.2.4.1"]
                     [puppetlabs/trapperkeeper]
-                    [puppetlabs/trapperkeeper-metrics "1.2.1" :exclusions [ring/ring-defaults org.slf4j/slf4j-api]]
                     [puppetlabs/trapperkeeper-status]

                     ;; Various


Added url

Added url

--- project.clj
+++ project.clj
@@ -1,6 +1,6 @@
 (defproject brutha "0.1.0-SNAPSHOT"
   :description "FIXME: write description"
-  :url "http://example.com/FIXME"
+  :url "http://brutha.herokuapp.com"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}


Bump to latest sqlite libraries on the JVM side.

--- project.clj
+++ project.clj
@@ -97,8 +97,8 @@
                                   [tempfile "0.2.0"]
                                   [com.cemerick/piggieback "0.2.1"]
                                   [org.clojure/tools.nrepl "0.2.10"]
-                                  [org.clojure/java.jdbc "0.6.2-alpha1"]
-                                  [org.xerial/sqlite-jdbc "3.8.11.2"]]
+                                  [org.clojure/java.jdbc "0.6.2-alpha3"]
+                                  [org.xerial/sqlite-jdbc "3.15.1"]]
                    :jvm-opts ["-Xss4m"]
                    :repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}
                    :plugins      [[lein-cljsbuild "1.1.3"]


Prepare for next release cycle.

Prepare for next release cycle.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject onyx-app/lein-template "0.12.5.0"
+(defproject onyx-app/lein-template "0.12.5.1-SNAPSHOT"
   :description "Onyx Leiningen application template"
   :url "https://github.com/onyx-platform/onyx-template"
   :license {:name "MIT License"


Add missing interceptor ns in api docs exclude list.

--- project.clj
+++ project.clj
@@ -43,6 +43,7 @@
                                        catacumba.handlers.cors
                                        catacumba.handlers.security
                                        catacumba.handlers.session
+                                       catacumba.handlers.interceptor
                                        catacumba.experimental.stomp
                                        catacumba.experimental.stomp.parser
                                        catacumba.experimental.stomp.broker]


Start 1.4.0-SNAPSHOT

Start 1.4.0-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject nightcode "1.3.0"
+(defproject nightcode "1.4.0-SNAPSHOT"
   :description "An IDE for Clojure and Java"
   :url "https://github.com/oakes/Nightcode"
   :license {:name "Public Domain"


working

working

--- src/c4_arena/core.clj
+++ src/c4_arena/core.clj
@@ -6,7 +6,7 @@
    [taoensso.timbre :as tb]
    [manifold
     [stream :as st]
-    [deferred :as d]]
+    [deferred :as df]]
    [aleph
     [http :as http]]
    [compojure.core
@@ -28,15 +28,17 @@
         dirs [1 nrows (inc nrows)]]
     (when (first
            (for [dir dirs]
-             (<= (inc n-to-win)
+             (<= (dec n-to-win)
                  (+
                   (count
                    (for [j (reductions + (repeat (- dir)))
-                         :while (= cand (state-val j))]
+                         :while (and (<= 0 j (dec ncols))
+                                     (= cand (state-val j)))]
                      true))
                   (count
                    (for [j (reductions + (repeat (+ dir)))
-                         :while (= cand (state-val j))]
+                         :while (and (<= 0 j (dec ncols))
+                                     (= cand (state-val j)))]
                      true))))))
       cand)))

@@ -46,7 +48,7 @@
   ;; then determines if there has been a winner. If there has been a
   ;; winner, it marks the winner. Flips turn and returns true at this point
   (when-let [i (and
-                (< 0 move ncols)
+                (<= 0 move (dec ncols))
                 (->> (range (* move nrows) (* (inc move) nrows))
                      (filter (fn [i] (= (@state i) 0)))
                      first))]
@@ -91,7 +93,7 @@
             (when-not @winner
               (recur)))))
       ;; Cleanup
-      (doseq [{:keys [latch ch-out]} players]
+      (doseq [{:keys [latch] [_ ch-out] :chs} players]
         (<! (notify ch-out))
         (>! ch-out {:type (if @winner "end" "disconnected")})
         (async/close! latch)))))
@@ -131,8 +133,8 @@
             (>! @matcher {:id id :chs chs :latch latch})
             ;; Waits here until game ends
             (<! latch))
-          (do (>! ch-out {:type "ignored" :msg msg})
-              (recur)))))))
+          (>! ch-out {:type "ignored" :msg msg}))
+        (recur)))))

 ;;; Game loop
 (defn game-init [s]
@@ -146,7 +148,8 @@
     (go
       ;; Keep waiting to start new games if channels are still alive
       (<! (game-handler [ch-in ch-out]))
-      (st/close! s))))
+      (st/close! s))
+    {:status 200 :body "success!"}))

 ;;; Websocket connection for the game protocol
 (defn game-websocket [req]


lein-release plugin: preparing 0.37 release

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject tyranitar "0.37-SNAPSHOT"
+(defproject tyranitar "0.37"
   :description "Tyranitar service"
   :url "http://wikis.in.nokia.com/NokiaMusicArchitecture/Tyranitar"


bumped ctim to 0.3.1 non snapshot

bumped ctim to 0.3.1 non snapshot

--- project.clj
+++ project.clj
@@ -43,7 +43,7 @@
                  ;; Schemas
                  [prismatic/schema ~schema-version]
                  [metosin/schema-tools ~schema-tools-version]
-                 [threatgrid/ctim "0.3.1-SNAPSHOT"
+                 [threatgrid/ctim "0.3.1"
                   ;; Exclusions:
                   ;; - ring-swagger as 0.22.9 lacks s/Any support
                   :exclusions [metosin/ring-swagger]]


Bump snapshot version.

Bump snapshot version.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject mvxcvi/blocks "0.7.0-SNAPSHOT"
+(defproject mvxcvi/blocks "0.8.0-SNAPSHOT"
   :description "Content-addressed data storage interface."
   :url "https://github.com/greglook/blocks"
   :license {:name "Public Domain"


Prepare for next release cycle.

Prepare for next release cycle.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.onyxplatform/onyx-dashboard "0.9.0.0-beta2"
+(defproject org.onyxplatform/onyx-dashboard "0.9.0.0-SNAPSHOT"
   :description "Dashboard for the Onyx distributed computation system"
   :url "http://github.com/lbradstreet/onyx-dashboard"
   :license {:name "Eclipse Public License"


Added line-range func.

Added line-range func.

--- src/cbfg/zgo/core.clj
+++ src/cbfg/zgo/core.clj
@@ -4,21 +4,15 @@
             [clojure.tools.reader.reader-types :as rt]
             [clojure.pprint :refer [pprint]]))

-(defn prm [x]
+(defn pprintm [x]
   (binding [*print-meta* true]
-    (pr x)))
-
-(defn read-model-file-rdr [fname rdr]
-  (binding [*read-eval* false]
-    (loop [forms []]
-      (let [form (r/read rdr false :eof)]
-        (if (= form :eof)
-          forms
-          (recur (conj forms form)))))))
+    (pprint x)))

 (defn read-model-file [fname]
-    {:forms (let [rdr (rt/indexing-push-back-reader
-                       (java.io.PushbackReader. (clojure.java.io/reader fname)) 10 fname)]
+    {:fname fname
+     :forms (let [rdr (rt/indexing-push-back-reader
+                       (java.io.PushbackReader. (clojure.java.io/reader fname))
+                       10 fname)]
               (binding [*read-eval* false]
                 (loop [forms []]
                   (let [form (r/read rdr false :eof)]
@@ -28,10 +22,37 @@
      :lines (with-open [rdr (clojure.java.io/reader fname)]
               (vec (line-seq rdr)))})

+(def MAX-LINE 0x8FFFFFF)
+(def MIN-LINE -1)
+
+(defn line-range [form]
+  (if (coll? form)
+    (reduce (fn [[min-line-beg max-line-end] v]
+              (let [[line-beg line-end] (line-range v)]
+                [(min min-line-beg line-beg)
+                 (max max-line-end line-end)]))
+            [MAX-LINE MIN-LINE]
+            form)
+    [(or (:line (meta form)) MAX-LINE)
+     (or (:end-line (meta form)) MIN-LINE)]))
+
+(defn process-top-level-form [model form]
+  (let [[op name & rest] form]
+    (case (str op)
+      "ns" ["package" name (line-range form)]
+      "defn" ["func" name (line-range form)]
+      "UNKNOWN-TOP-LEVEL-FORM")))
+
+(defn process-top-level-forms [model]
+  (map #(process-top-level-form model %)
+       (:forms model)))
+
 (defn -main
   "some docstring"
   []
   (println "hello world from zgo")
-  (pprint (read-model-file "src/cbfg/misc.cljs")))
+  (let [model (read-model-file "src/cbfg/fence.cljs")
+        pmodel (process-top-level-forms model)]
+    (pprintm model)
+    (pprintm pmodel)))

-


release 0.2.3

release 0.2.3

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject wma-clj/lein-template "0.2.3-SNAPSHOT"
+(defproject wma-clj/lein-template "0.2.3"
   :description "FIXME: write description"
   :url "http://example.com/FIXME"
   :license {:name "Eclipse Public License"


Renamed to smodel.

Renamed to smodel.

--- src/cbfg/zgo/core.clj
+++ src/cbfg/zgo/core.clj
@@ -36,23 +36,23 @@
     [(or (:line (meta form)) MAX-LINE)
      (or (:end-line (meta form)) MIN-LINE)]))

-(defn process-top-level-form [model form]
+(defn process-top-level-form [smodel form]
   (let [[op name & rest] form]
     (case (str op)
       "ns" ["package" name (line-range form)]
       "defn" ["func" name (line-range form)]
       "UNKNOWN-TOP-LEVEL-FORM")))

-(defn process-top-level-forms [model]
-  (map #(process-top-level-form model %)
-       (:forms model)))
+(defn process-top-level-forms [smodel]
+  (map #(process-top-level-form smodel %)
+       (:forms smodel)))

 (defn -main
   "some docstring"
   []
   (println "hello world from zgo")
-  (let [model (read-model-file "src/cbfg/fence.cljs")
-        pmodel (process-top-level-forms model)]
-    (pprintm model)
+  (let [smodel (read-model-file "src/cbfg/fence.cljs")
+        pmodel (process-top-level-forms smodel)]
+    (pprintm smodel)
     (pprintm pmodel)))


Version 2.19.2-1-SNAPSHOT [ci skip]

Version 2.19.2-1-SNAPSHOT [ci skip]

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clojush "2.19.2"
+(defproject clojush "2.19.2-1-SNAPSHOT"
   :description "The Push programming language and the PushGP genetic programming
                 system implemented in Clojure. See http://pushlanguage.com"
   :license {:name "Eclipse Public License"


Back to SNAPSHOT.

Back to SNAPSHOT.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject ancient-clj "0.1.2"
+(defproject ancient-clj "0.1.3-SNAPSHOT"
   :description "Maven Version Utilities for Clojure"
   :url "https://github.com/xsc/ancient-clj"
   :license {:name "Eclipse Public License"


Profile fixes.

Profile fixes.

--- project.clj
+++ project.clj
@@ -26,6 +26,7 @@
     [clojusc/trifl "0.2.0"]
     [clojusc/twig "0.3.2"]
     [com.stuartsierra/component "0.3.2"]
+    [environ "1.1.0"]
     [http-kit "2.2.0"]
     [metosin/reitit-core "0.1.1-SNAPSHOT"]
     [metosin/reitit-ring "0.1.1-SNAPSHOT"]
@@ -42,10 +43,11 @@
   :profiles {
     :ubercompile {
       :aot :all}
+    :system {
+      :dependencies [
+        [clojusc/dev-system "0.1.0"]]}
     :local {
       :dependencies [
-        [clojusc/dev-system "0.1.0"]
-        [environ "1.1.0"]
         [org.clojure/tools.namespace "0.2.11"]
         [proto-repl "0.3.1"]]
       :plugins [
@@ -99,7 +101,7 @@
         :output-path "docs/current"}}}
   :aliases {
     ;; Dev & Testing Aliases
-    "repl" ["with-profile" "+local" "repl"]
+    "repl" ["with-profile" "+local,+system" "repl"]
     "ubercompile" ["with-profile" "+ubercompile" "compile"]
     "check-vers" ["with-profile" "+lint" "ancient" "check" ":all"]
     "check-jars" ["with-profile" "+lint" "do"
@@ -114,8 +116,8 @@
       ["kibit"]
       ;["eastwood"]
       ]
-    "ltest" ["with-profile" "+test" "ltest"]
-    "junit" ["with-profile" "+test" "test2junit"]
+    "ltest" ["with-profile" "+test,+system" "ltest"]
+    "junit" ["with-profile" "+test,+system" "test2junit"]
     "version" ["do"
       ["version"]
       ["shell" "echo" "-n" "CMR-OPeNDAP: "]


bumped version to 0.1.0-SNAPSHOT

bumped version to 0.1.0-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject lein-jruby "0.0.1-SNAPSHOT"
+(defproject lein-jruby "0.1.0-SNAPSHOT"
   :description "Run JRuby commands from Leiningen."
   :dependencies [[org.jruby/jruby-complete "1.6.7"]
                  ; [org.clojure/java.classpath "0.1.0"]


Set release version 0.9.0.

Set release version 0.9.0.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject mvxcvi/blocks "0.9.0-SNAPSHOT"
+(defproject mvxcvi/blocks "0.9.0"
   :description "Content-addressed data storage interface."
   :url "https://github.com/greglook/blocks"
   :license {:name "Public Domain"


project.clj license

project.clj license

--- project.clj
+++ project.clj
@@ -1,8 +1,8 @@
 (defproject sketches "0.1.0-SNAPSHOT"
-  :description "FIXME: write description"
-  :url "http://example.com/FIXME"
-  :license {:name "Eclipse Public License"
-            :url "http://www.eclipse.org/legal/epl-v10.html"}
+  :description "sketches"
+  :url "https://github.com/ckampfe/sketches"
+  :license {:name "GNU AGPL"
+            :url "https://www.gnu.org/licenses/agpl.txt"}
   :dependencies [[org.clojure/clojure "1.8.0"]
                  [quil "2.3.0"]
                  [org.clojure/clojurescript "1.7.228"]]


bumped the clojure version used from 1.6.0 to 1.7.0 since otherwise markdown-clj throws namespace errors

`Caused by: java.io.FileNotFoundException: Could not locate markdown/transformers__init.class or markdown/transformers.clj on classpath:`

--- project.clj
+++ project.clj
@@ -3,7 +3,7 @@
   :url "https://github.com/philippkueng/watney"
   :license {:name "MIT"
             :url "http://opensource.org/licenses/MIT"}
-  :dependencies [[org.clojure/clojure "1.6.0"]
+  :dependencies [[org.clojure/clojure "1.7.0"]
                  [enlive "1.1.6"]]
   :profiles {:dev {:dependencies [[midje "1.7.0" :exclusions [org.clojure/tools.namespace org.clojure/clojure]]
                                   [markdown-clj "0.9.69" :exclusions [org.clojure/clojure]]]


Bumped version number for 1.22 branch

Bumped version number for 1.22 branch

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject naojure "0.0.1-SNAPSHOT"
+(defproject naojure "0.2.0"
   :description "Clojure wrapper for Aldebaran Robotics java NAOQI binding. Depends on the Aldebaran jar (which includes native dependencies) being installed in local repo"
   :url "https://github.com/davesnowdon/naojure"
   :license {:name "GNU Lesser General Public License 2.1"


core.async 0.1.319.0-6b1aca-alpha

core.async 0.1.319.0-6b1aca-alpha

--- project.clj
+++ project.clj
@@ -5,4 +5,5 @@
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :main cljs.go
   :dependencies [[org.clojure/clojure "1.7.0-alpha1"]
-                 [org.clojure/clojurescript "0.0-2311"]])
+                 [org.clojure/clojurescript "0.0-2311"]
+                 [org.clojure/core.async "0.1.319.0-6b1aca-alpha"]])


response pharsing

response pharsing

--- src/celestial/api.clj
+++ src/celestial/api.clj
@@ -28,7 +28,7 @@
            (defroutes system-routes
              (POST "/:hypervisor" [hypervisor system]
                    (enqueue "system" {:hypervisor hypervisor :system system})
-                   (generate-response {:status "system is up"}))))
+                   (generate-response {:status "submited system creation"}))))
   (route/not-found "Not Found"))

 (def app


Correct artifact group again

Correct artifact group again

Somehow the change from last week got lost :/

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject io.tilde/momentum "0.2.0-SNAPSHOT"
+(defproject io.tilde.momentum/momentum "0.2.0-SNAPSHOT"
   :description "Async HTTP framework built on top of Netty"

   :dependencies [[org.clojure/clojure   "1.3.0"]


Version 0.1.2

Version 0.1.2

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject asystant "0.1.2-SNAPSHOT"
+(defproject asystant "0.1.2"
   :description "A simple, flexible helper for building modular systems with clojure/core.async"
   :url "https://github.com/monteithpj/asystant"
   :license {:name "Eclipse Public License"


Update project URL.

Update project URL.

--- project.clj
+++ project.clj
@@ -1,6 +1,6 @@
 (defproject viewer "0.1.0-SNAPSHOT"
   :description "EVE Online Data Dump Viewer"
-  :url "http://example.com/FIXME"
+  :url "http://evemastery.appspot.com/"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[org.clojure/clojure "1.6.0-RC1"]


Update cljx and lein cljsbuild plugins.

Update cljx and lein cljsbuild plugins.

--- project.clj
+++ project.clj
@@ -18,8 +18,8 @@

   :min-lein-version "2.0.0"

-  :plugins [[com.keminglabs/cljx "0.1.0"]
-            [lein-cljsbuild "0.1.6"]
+  :plugins [[com.keminglabs/cljx "0.1.2"]
+            [lein-cljsbuild "0.1.8"]
             [lein-midje "2.0.0-SNAPSHOT"]
             [lein-marginalia "0.7.0"]]


Version 0.0.8

Version 0.0.8

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject day8.re-frame/abra "0.0.8-SNAPSHOT"
+(defproject day8.re-frame/abra "0.0.8"
   :description "Tracing and developer tools for re-frame apps"
   :url         "https://github.com/Day8/re-frame-trace"
   :license     {:name "MIT"}


Test against 1.6.0-RC4

Test against 1.6.0-RC4

--- project.clj
+++ project.clj
@@ -11,7 +11,7 @@
   :source-paths      ["src/clojure"]
   :java-source-paths ["src/java"]
   :profiles       {:1.4 {:dependencies [[org.clojure/clojure "1.4.0"]]}
-                   :1.6 {:dependencies [[org.clojure/clojure "1.6.0-RC2"]]}
+                   :1.6 {:dependencies [[org.clojure/clojure "1.6.0-RC4"]]}
                    :master {:dependencies [[org.clojure/clojure "1.6.0-master-SNAPSHOT"]]}
                    :dev {:jvm-opts     ["-Dlog4j.configuration=log4j.properties.unit"
                                         "-Xmx2048m"


Version bump.

Version bump.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clojush "1.3.44"
+(defproject clojush "1.3.45"
             :description "The Push programming language and the PushGP genetic
                           programming system implemented in Clojure.
                           See http://hampshire.edu/lspector/push.html"


lein-release plugin: preparing 0.2.26 release

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject de.otto/oscillator "0.2.26-SNAPSHOT"
+(defproject de.otto/oscillator "0.2.26"
             :description "A Clojure library that lets you create dashboards with
                          interactive charts to monitor applications in multiple environments."
             :url "https://github.com/otto-de/oscillator"


io version inc.

io version inc.

--- project.clj
+++ project.clj
@@ -1,11 +1,11 @@
-(defproject protobuf "0.5.0-beta4"
+(defproject protobuf "0.5.0-beta5"
   :description "Clojure-protobuf provides a clojure interface to Google's protocol buffers."
   :dependencies [[clojure "1.2.0"]
                  [ordered-set "0.2.2"]
                  [useful "0.7.4-alpha4"]
                  [classlojure "0.6.3"]]
   :dev-dependencies [[gloss "0.2.0-rc1"]
-                     [io "0.1.0-alpha1"]]
+                     [io "0.1.0-alpha2"]]
   :eval-in-project true
   :java-source-path "build/protosrc"
   :jar-files ["proto"])


use newest dda-pallet

use newest dda-pallet

--- project.clj
+++ project.clj
@@ -4,7 +4,7 @@
   :license {:name "Apache License, Version 2.0"
             :url "https://www.apache.org/licenses/LICENSE-2.0.html"}
   :dependencies [[org.clojure/clojure "1.7.0"]
-                 [dda/dda-pallet "1.2.0"]]
+                 [dda/dda-pallet "2.0.1-SNAPSHOT"]]
   :source-paths ["main/src"]
   :resource-paths ["main/resources"]
   :repositories [["snapshots" :clojars]
@@ -20,7 +20,7 @@
                    [[org.domaindrivenarchitecture/pallet-aws "0.2.8.2"]
                     [com.palletops/pallet "0.8.12" :classifier "tests"]
                     [org.clojure/tools.cli "0.3.5"]
-                    [ch.qos.logback/logback-classic "1.2.3"]
+                    [ch.qos.logback/logback-classic "1.3.0-alpha4"]
                     [org.slf4j/jcl-over-slf4j "1.8.0-beta1"]]
                    :plugins [[lein-sub "0.3.0"]
                              [lein-pprint "1.1.2"]]
@@ -35,6 +35,6 @@
                        :aot :all
                        :main dda.pallet.dda-serverspec-crate.main
                        :dependencies [[org.clojure/tools.cli "0.3.5"]
-                                      [ch.qos.logback/logback-classic "1.2.3"]
+                                      [ch.qos.logback/logback-classic "1.3.0-alpha4"]
                                       [org.slf4j/jcl-over-slf4j "1.8.0-beta1"]]}}
   :local-repo-classpath true)


bumped up version

bumped up version

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject selmer "1.12.53"
+(defproject selmer "1.12.54"
   :description "Django style templates for Clojure"
   :url "https://github.com/yogthos/Selmer"
   :license {:name "Eclipse Public License"


Update dependencies.

Update dependencies.

--- project.clj
+++ project.clj
@@ -4,8 +4,8 @@
   :license {:name "Public Domain"
             :url "http://unlicense.org/"}
   :dependencies [[org.clojure/clojure "1.8.0" :scope "provided"]
-                 [org.clojure/clojurescript "1.9.216" :scope "provided"]
-                 [io.netty/netty-buffer "4.1.4.Final"]]
+                 [org.clojure/clojurescript "1.9.229" :scope "provided"]
+                 [io.netty/netty-buffer "4.1.5.Final"]]

   :source-paths ["src"]
   :test-paths ["test"]


Version 0.1.5

Version 0.1.5

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject soy-clj "0.1.5-SNAPSHOT"
+(defproject soy-clj "0.1.5"
   :description "An idiomatic Clojure wrapper for Google's Closure templating system."
   :url "https://github.com/codahale/soy-clj"
   :license {:name "Eclipse Public License"


bumped up version

bumped up version

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject cryogen/lein-template "0.6.7"
+(defproject cryogen/lein-template "0.6.8"
   :description "A Leiningen template for the Cryogen static site generator"
   :url "https://github.com/cryogen-project/cryogen"
   :license {:name "Eclipse Public License"


Upgrade Clara to 0.17.0

Upgrade Clara to 0.17.0

--- project.clj
+++ project.clj
@@ -7,7 +7,7 @@
                  [org.clojure/spec.alpha "0.1.109"]
                  [org.clojure/clojurescript "1.9.854"]
                  [org.clojure/core.async "0.3.442"]
-                 [com.cerner/clara-rules "0.16.0-SNAPSHOT"]
+                 [com.cerner/clara-rules "0.17.0"]
                  [com.cognitect/transit-clj "0.8.300"]
                  [com.cognitect/transit-cljs "0.8.239"]
                  [com.taoensso/sente "1.11.0"]


Version 0.1.0

Version 0.1.0

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject lambdacd-git "0.1.0-SNAPSHOT"
+(defproject lambdacd-git "0.1.0"
   :description "FIXME: write description"
   :url "http://example.com/FIXME"
   :license {:name "Eclipse Public License"


Bumped buddy version removed cljs-time

Bumped buddy version removed cljs-time


Upgrade to 0.9.7-alpha8.

Upgrade to 0.9.7-alpha8.

--- project.clj
+++ project.clj
@@ -1,10 +1,10 @@
-(defproject workshop "0.9.7.0-alpha7"
+(defproject workshop "0.9.7-alpha8"
   :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.7.0-alpha7"]
+                 [org.onyxplatform/onyx "0.9.7-alpha8"]
                  [org.slf4j/slf4j-api "1.7.12"]
                  [org.slf4j/slf4j-nop "1.7.12"]]
   :profiles {:dev {:dependencies [[org.clojure/tools.namespace "0.2.10"]


Version 0.1.8-SNAPSHOT

Version 0.1.8-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject ci-test "0.1.7"
+(defproject ci-test "0.1.8-SNAPSHOT"
   :description "FIXME: write description"
   :url "http://example.com/FIXME"
   :license {:name "Eclipse Public License"


Alpha version

Alpha version

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.clojars.norgat/quil "2.0.0-SNAPSHOT"
+(defproject org.clojars.norgat/quil "2.0.0-alpha"
   :description "(mix Processing Clojure)"
   :url "http://github.com/Norgat/quil"


Prepare for next release cycle.

Prepare for next release cycle.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.onyxplatform/onyx-sql "0.7.13"
+(defproject org.onyxplatform/onyx-sql "0.7.14-SNAPSHOT"
   :description "Onyx plugin for JDBC-backed SQL databases"
   :url "https://github.com/MichaelDrogalis/onyx-sql"
   :license {:name "Eclipse Public License"


include :url entries to original sources in mapped stacktraces if it can be determined   from the classpath

--- src/clj/cljs/repl.clj
+++ src/clj/cljs/repl.clj
@@ -223,7 +223,9 @@
       :line <integer>
       :column <integer>}*]

-   :file must be a URL path (without protocol) relative to :output-dir."
+   :file must be a URL path (without protocol) relative to :output-dir. The
+   returned mapped stacktrace will also contain :url entries to the original
+   sources if it can be determined from the classpath."
   ([stacktrace] (mapped-stacktrace stacktrace nil))
   ([stacktrace opts]
     (let [read-source-map' (memoize read-source-map)
@@ -245,11 +247,16 @@
                           (if ns-info
                             source-file
                             (io/file rfile)))
-                        (str (System/getProperty "user.dir") File/separator) "")]
-            {:function name'
-             :file     file'
-             :line     line'
-             :column   column'}))))))
+                        (str (System/getProperty "user.dir") File/separator) "")
+                url   (or (and ns-info (io/resource (util/ns->relpath ns)))
+                          (io/resource file))]
+            (merge
+              {:function name'
+               :file     (io/file file')
+               :line     line'
+               :column   column'}
+              (when url
+                {:url url}))))))))

 (defn print-mapped-stacktrace
   "Given a vector representing the canonicalized JavaScript stacktrace
@@ -267,13 +274,6 @@
      :output-to "samples/hello/out/hello.js"
      :source-map true})

-  ;; line 2 column 1
-  (mapped-line-and-column
-    (read-source-map "samples/hello/out/hello/core.js") 2 1)
-
-  ;; hello.core
-  (:ns (ns-info "samples/hello/out/hello/core.js"))
-
   (mapped-stacktrace
     [{:file "hello/core.js"
       :function "first"
@@ -287,6 +287,28 @@
       :line 2
       :column 1}]
     {:output-dir "samples/hello/out"})
+
+  ;; URL example
+
+  (cljsc/build "samples/hello/src"
+    {:optimizations :none
+     :output-dir "out"
+     :output-to "out/hello.js"
+     :source-map true})
+
+  (mapped-stacktrace
+    [{:file "cljs/core.js"
+      :function "first"
+      :line 2
+      :column 1}]
+    {:output-dir "out"})
+
+  (print-mapped-stacktrace
+    [{:file "cljs/core.js"
+      :function "first"
+      :line 2
+      :column 1}]
+    {:output-dir "out"})
   )

 (defn- display-error


remove recurring credits on trash/uninstall

Removes the new lime-green recurring credits from cards that get trashed or uninstalled by adding `rec-counter` to the list of things that get dissociated.

--- src/clj/game/core.clj
+++ src/clj/game/core.clj
@@ -64,8 +64,8 @@
   ([state side card] (desactivate state side card nil))
   ([state side card keep-counter]
    (let [c (dissoc card :current-strength :abilities :rezzed :special)
-         c (if (= (:side c) "Runner") (dissoc c :installed :counter) c)
-         c (if keep-counter c (dissoc c :counter :advance-counter))]
+         c (if (= (:side c) "Runner") (dissoc c :installed :counter :rec-counter) c)
+         c (if keep-counter c (dissoc c :counter :rec-counter :advance-counter))]
      (when-let [leave-effect (:leave-play (card-def card))]
        (when (or (= (:side card) "Runner") (:rezzed card))
          (leave-effect state side card nil)))


Simplify form workflow

Simplify form workflow

--- src/clj_crud/core.clj
+++ src/clj_crud/core.clj
@@ -26,15 +26,12 @@
 (defn main-handler []
   (-> #'main-routes
       (friend/authenticate {:login-uri "/login"
-                            :workflows [
-                                        #_(workflows/interactive-form)
-                                        (fn [req]
-                                          ((workflows/interactive-form)
-                                           (assoc-in req [::friend/auth-config :credential-fn]
-                                                     (fn form-credential-fn [creds]
-                                                       (debug "creds are:" creds)
-                                                       (credentials/bcrypt-credential-fn
-                                                        (accounts-data/lookup-friend-identity (:database req)) creds)))))]})
+                            :workflows [(fn [req]
+                                          ((workflows/interactive-form
+                                            :credential-fn (fn form-credential-fn [creds]
+                                                             (credentials/bcrypt-credential-fn
+                                                              (accounts-data/lookup-friend-identity (:database req)) creds)))
+                                           req))]})
       ring/wrap-common))

 (defn dev-handler []


Adding status message and delay to starting tests in cljs test script

--- src/cljs_dev/dev.cljs
+++ src/cljs_dev/dev.cljs
@@ -30,4 +30,8 @@
         1000))))

 (set! (.-onload js/window)
-  #(run-tests 'hyjinks.browser.dev))
+  (fn []
+    (println "Running tests...")
+    (js/setTimeout
+      #(run-tests 'hyjinks.browser.dev)
+      1000)))


Support for new command line option: -h/--help

--- src/clouseau/core.clj
+++ src/clouseau/core.clj
@@ -1,7 +1,7 @@
 ;;;
 ;;;   Clouseau
 ;;;
-;;;    Copyright (C) 2015 Pavel Tisnovsky <ptisnovs@redhat.com>
+;;;    Copyright (C) 2015, 2016  Pavel Tisnovsky <ptisnovs@redhat.com>
 ;;;
 ;;; Clouseau is free software; you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -53,7 +53,8 @@
 (def cli-options
     "Definitions of all command line options currenty supported."
     ;; an option with a required argument
-    [["-p" "--port   PORT"    "port number"   :id :port]])
+    [["-p" "--port   PORT"    "port number"    :id :port]
+     ["-h" "--help"           "show this help" :id :help]])

 (def app
     "Definition of a Ring-based application behaviour."
@@ -83,13 +84,21 @@
         default-port
         (get-and-check-port specified-port)))

+(defn show-help
+    "Display brief help on the standard output."
+    [all-options]
+    (println "Usage:")
+    (println (:summary all-options)))
+
 (defn -main
     "Entry point to the Clouseau server."
     [& args]
     (let [all-options      (cli/parse-opts args cli-options)
           options          (all-options :options)
           port             (options :port)]
-          (start-server    (get-port port))))
+          (if (:help options)
+              (show-help all-options)
+              (start-server (get-port port)))))

 ; finito


Include the filepath of the original file in our

opts map.

--- src/aero/core.clj
+++ src/aero/core.clj
@@ -41,12 +41,12 @@
   "Optional second argument is a map. Keys are :profile, indicating the
   profile for use with #cond"
   ([r {:keys [schema] :as opts}]
-   (let [config
-         (with-open [pr (java.io.PushbackReader. (io/reader r))]
-           (edn/read
-            {:eof nil
-             :default (partial reader (merge {:profile :default} opts))}
-            pr))]
+   (let [config (with-open [pr (java.io.PushbackReader. (io/reader r))]
+                  (edn/read
+                   {:eof nil
+                    :default (partial reader (merge {:profile :default
+                                                     :filepath (str r)} opts))}
+                   pr))]
      (when schema
        (s/validate schema config))
      config))


refer fix in core (mkdir)

refer fix in core (mkdir)

--- src/cake/core.clj
+++ src/cake/core.clj
@@ -1,5 +1,6 @@
 (ns cake.core
   (:use cake cake.task
+	[cake.file :only [mkdir]]
         [cake.utils.useful :only [update into-map verify merge-in]]
         [clojure.contrib.condition :only [raise]]
         [clojure.string :only [join]])


start writing tab line parser

start writing tab line parser

--- ohack/src/ohack/core.clj
+++ ohack/src/ohack/core.clj
@@ -207,6 +207,9 @@
                   next-rtn))))))
   )

+;; copy a line from the prn output and add in a hammer for good measure:
+"B|----1-----2----0----3----|--1---0---3------|--1---0---3---0h1-|--1---3------|"
+
 ;; first, filter out all lines that don't look like guitar lines
 ;; use map-index because we need to keep ordering information
 (let [guitar-tab fast-car-tab


Fix indentation

Fix indentation

--- src/datemo/routes.clj
+++ src/datemo/routes.clj
@@ -219,30 +219,30 @@
                             :html doc-html}}}))))

 (defn post-doc [doc-string doctype title tags]
- (let [id (d/squuid)
-       tx (-> (html->tx
-                (md-to-html-string doc-string)
-                {:metadata/title (or title "Untitled")}
-                {:metadata/doctype (keyword "doctype" doctype)}
-                (gen-tags-meta tags))
-              (into {:arb/id id}) (edn->clj))
-       [tx-result tx-error] (db/transact-or-error [tx])]
-   (if (nil? tx-error)
-     (let [db-after (:db-after tx-result)
-           new-doc (d/pull db-after '[*] [:arb/id id])
-           html (-> new-doc (tx->arb) (arb->hiccup) (html))]
-       {:status 201
-        :headers {"Content-Type" "application/hal+json; charset=utf-8"}
-        :body {:_links {:self {:href (apply str "/documents/" (str id))}}
-               :_embedded {:id id
-                           :title (get-title (:arb/metadata new-doc))
-                           :doctype (get-doctype (:arb/metadata new-doc))
-                           :created-at (get-created-at id db-after)
-                           :updated-at (get-updated-at id db-after)
-                           :tags (get-tags (:arb/metadata new-doc))
-                           :html html}}})
-     {:status 500
-      :body {:error (apply str "Error posting: " tx-error)}})))
+  (let [id (d/squuid)
+        tx (-> (html->tx
+                 (md-to-html-string doc-string)
+                 {:metadata/title (or title "Untitled")}
+                 {:metadata/doctype (keyword "doctype" doctype)}
+                 (gen-tags-meta tags))
+               (into {:arb/id id}) (edn->clj))
+        [tx-result tx-error] (db/transact-or-error [tx])]
+    (if (nil? tx-error)
+      (let [db-after (:db-after tx-result)
+            new-doc (d/pull db-after '[*] [:arb/id id])
+            html (-> new-doc (tx->arb) (arb->hiccup) (html))]
+        {:status 201
+         :headers {"Content-Type" "application/hal+json; charset=utf-8"}
+         :body {:_links {:self {:href (apply str "/documents/" (str id))}}
+                :_embedded {:id id
+                            :title (get-title (:arb/metadata new-doc))
+                            :doctype (get-doctype (:arb/metadata new-doc))
+                            :created-at (get-created-at id db-after)
+                            :updated-at (get-updated-at id db-after)
+                            :tags (get-tags (:arb/metadata new-doc))
+                            :html html}}})
+      {:status 500
+       :body {:error (apply str "Error posting: " tx-error)}})))

 (defroutes app-routes
   (GET "/" [] {:body {:_links {:documents {:href "/docs"}}}})


reinstate  `LIMIT 1` in the sql

reinstate  `LIMIT 1` in the sql

--- src/duratom/utils.clj
+++ src/duratom/utils.clj
@@ -73,7 +73,7 @@
     (catch BatchUpdateException _ '(0)))) ;; table already exists!

 (defn get-pgsql-value [db table-name row-id]
-  (sql/query db [(str "SELECT value FROM " table-name " WHERE id = " row-id)]
+  (sql/query db [(str "SELECT value FROM " table-name " WHERE id = " row-id " LIMIT 1")]
              {:row-fn (comp edn/read-string :value)
               :result-set-fn first}))


Improved errors! Removed debug print!

Improved errors! Removed debug print!

--- src/eddy/schedule.clj
+++ src/eddy/schedule.clj
@@ -13,7 +13,7 @@
                    "clojurewerkz.quartzite.schedule."
                    (case interval-key
                      :every "calendar-interval"
-                     (throw (IllegalArgumentException. "Interval syntax invalid"))))]
+                     (throw (IllegalArgumentException. "Unknown interval operator '" interval-key "'"))))]
     (require (symbol namespace))
     namespace))

@@ -29,7 +29,7 @@

 (defn calendar-interval-operands [operand-data]
   (if (not (= (count operand-data) 2))
-    (throw (IllegalArgumentException. "Calendar interval syntax invalid")))
+    (throw (IllegalArgumentException. "Calendar interval operands must be in the format (<number> <unit>)'")))

   (let [interval (int (first operand-data))
         unit (second operand-data)]
@@ -38,14 +38,13 @@
 (defn interval-operands [namespace operand-data]
   (let [operands (case namespace
                    "clojurewerkz.quartzite.schedule.calendar-interval" (calendar-interval-operands operand-data)
-                   (throw (IllegalArgumentException. "Interval syntax invalid")))]
+                   (throw (IllegalArgumentException. (str "Can't make interval operands for namespace '" namespace "'")))]
     (map #(cons (symbol namespace (first %)) (rest %)) operands)))

 (defn make-schedule [interval-data]
   (let [operator (first interval-data)
         namespace (interval-class operator)
         operands (interval-operands namespace (next interval-data))]
-    (println namespace)
     (cons (symbol namespace "schedule")
           operands)))


debugging deployed examples

debugging deployed examples

--- src/evalback/core.clj
+++ src/evalback/core.clj
@@ -145,8 +145,9 @@

 (defn debug-path []
   (let [b (io/file ".")
-        files (file-seq b)]
-        (apply str files)))
+        files (file-seq b)
+        files (map (fn [f] (.getAbsolutePath f)))]
+        (clojure.string/join "\n" files)))

 (defn provide-examples []
   (str "/*\n" (debug-path) "*/\n" "\nexample_list = "


removed a trace

removed a trace

--- ccw.core/src/ccw/editors/antlrbased/EditorSupportImpl.clj
+++ ccw.core/src/ccw/editors/antlrbased/EditorSupportImpl.clj
@@ -30,7 +30,7 @@
   (let [r (if (nil? r) (ref nil) r)]
     (dosync
       (if-let [rv @r] (cancel (:parser rv)))
-      (ref-set r {:text text :parser (timed-delay 800 #(time (p/parse text)))}))
+      (ref-set r {:text text :parser (timed-delay 800 #(p/parse text))}))
     r))

 (defn -getParser [text r]


Focus management #38

Focus management #38

--- src/flatgui/paint.clj
+++ src/flatgui/paint.clj
@@ -258,15 +258,15 @@
     (:clip-size container)
     (:look-vec container)))

-;;;
-;;; TODO sort by z-order here?
-;;;
+;;; TODO investigate sorting impact on performance
 (defn get-paint-all-sequence
   ([id-path container]
     (if (ready-for-paint? container)
       (apply concat
              [(conj id-path (:id container))]
-             (for [[_ v] (:children container)] (get-paint-all-sequence (conj id-path (:id container)) v)))
+             (map
+               #(get-paint-all-sequence (conj id-path (:id container)) %)
+               (sort-by :z-position (for [[_ v] (:children container)] v))))
      []))
   ([container] (get-paint-all-sequence [] container)))


exclude core compile from build api tests

--- src/test/clojure/cljs/build_api_tests.clj
+++ src/test/clojure/cljs/build_api_tests.clj
@@ -1,4 +1,5 @@
 (ns cljs.build-api-tests
+  (:refer-clojure :exclude [compile])
   (:use cljs.build.api)
   (:use clojure.test)
   (:require [cljs.env :as env]


Update project.clj

Update project.clj

--- src/jarkeeper/views/project.clj
+++ src/jarkeeper/views/project.clj
@@ -40,7 +40,6 @@
       [:th {:width "180"} ""]
       [:th {:width "90"} ""]]]
    (render-deps items)])
-

 (defn index [project]


disabled removal of :private metadata in release build

--- src/leiningen/droid/compile.clj
+++ src/leiningen/droid/compile.clj
@@ -95,7 +95,7 @@
   (let [nses (namespaces-to-compile project)
         dev-build (dev-build? project)
         compiler-options (if dev-build {} {:elide-meta [:doc :file :line :added
-                                                        :arglists :private]})]
+                                                        :arglists]})]
     (info (format "Build type: %s, dynamic compilation: %s, remote REPL: %s."
                   (if dev-build "debug" "release")
                   (if (or dev-build start-nrepl-server


added docs

added docs

--- src/lib_onyx/migrations/sql.clj
+++ src/lib_onyx/migrations/sql.clj
@@ -39,20 +39,35 @@
    (s/optional-key :migrations-table) s/Str})

 (def JoplinConfigSchema
-  {:databases {s/Any JoplinDatabaseDescriptor}
+  {(s/optional-key :databases) {s/Any JoplinDatabaseDescriptor}
    (s/optional-key :migrators) {s/Any s/Str}
    (s/optional-key :seeds) s/Any
-   :environments {s/Any [{:db JoplinDatabaseDescriptor
-                          :migrator s/Str}]}})
+   :environments {s/Keyword [{:db JoplinDatabaseDescriptor
+                              :migrator s/Str}]}})

 (defn with-joplin-migrations
   "This task bundle modifier will continously try to apply data migrations
-  before allowing the task to start. Takes a joplin-config as defined in the
-  Joplin docs, and a specific 'environment' key to use.
-  https://github.com/juxt/joplin
+  before allowing the task to start.

-  This does not apply data seeders.
-  "
+  - joplin-config structure can be discovered from the schema and is specific
+  to your database(s). It is generally of this structure
+
+  {:environments {:dev [{:db {:type :sql
+                              :url 'jdbc-url'}
+                         :migrator 'resources/migrators/sql'}]}}
+
+  - joplin-environment is a selector for a specific config.
+  The only valid selector for the above example would be ':dev'.
+
+  The datastructure is expected in this form to make interop with the joplin
+  command line tools simple, since they share an expected shape. More can be
+  read about Joplin here https://github.com/juxt/joplin.
+
+  If you are providing this config data another way, either manually or through
+  a seperate mechanism, you may elide either-or the joplin-config or
+  joplin-environment.
+
+  This does not apply data seeders."
   ([] (with-joplin-migrations nil nil))
   ([joplin-environment] (with-joplin-migrations joplin-environment nil))
   ([joplin-environment joplin-config]


use 'id -ng' to find primary group

use 'id -ng' to find primary group

--- src/duffel/fs.clj
+++ src/duffel/fs.clj
@@ -96,16 +96,14 @@
   (= (trim (exec "uname")) "Darwin"))

 (defn find-default-group
-  "Chooses the default group as the group of the user's home,
-  or if all else fails uses the username"
+  "Chooses the default group as the group of the user's home, or if all else
+  fails uses the username"
   [username]
   (try
-    (trim
-     (if (darwin?)
-       (exec "stat" "-f" "%Sg" (System/getenv "HOME"))
-       (exec "stat" "-c" "%G" (System/getenv "HOME"))))
+    (trim (exec "id" "-ng"))
     (catch Exception e
-      ;; Fuck it, let's just return the username and pretend this never happened...
+      ;; Fuck it, let's just return the username and pretend this never
+      ;; happened...
       username)))

 (defn full-octal


accept integer for bytecode version going forward

--- src/insn/core.clj
+++ src/insn/core.clj
@@ -150,13 +150,18 @@
         this (util/class-desc cls)
         super (util/class-desc (:super t Object))
         ifaces (map util/class-desc (:interfaces t))
-        version (util/check-valid "version" util/version?
-                                  (:version t *bytecode-version*))
-        wflags (if (>= (long version) 1.7)
+
+        version (:version t *bytecode-version*)
+        bversion (util/check-valid "version" util/version? version)
+        iversion (if (float? version)
+                   (* 10 (- version (long version)))
+                   version)
+        wflags (if (>= (long iversion) 7)
                  ClassWriter/COMPUTE_FRAMES
                  ClassWriter/COMPUTE_MAXS)
+
         cv (doto (ClassWriter. wflags)
-             (.visit version (util/flags flags) this nil
+             (.visit bversion (util/flags flags) this nil
                      super (into-array String ifaces)))

         ctor? #(= "<init>" (util/method-name (:name %)))
@@ -186,7 +191,8 @@
                  "I" (int v), "J" (long v)
                  "F" (float v), "D" (double v)
                  v))
-        fv (.visitField cv (util/flags flags) (name (:name f)) ftype nil fval)]
+        fv (.visitField cv (util/flags flags)
+                        (name (:name f)) ftype nil fval)]
     (ann/visit fv (:annotations f))
     (.visitEnd fv)))


fixbug

fixbug

--- src/kiln/core.clj
+++ src/kiln/core.clj
@@ -91,11 +91,12 @@
           (merge
             config
             meta-dict
-            {:tags (map #(hash-map :name %1, :urlcode (URLEncoder/encode %1 "UTF-8")) (get meta-dict :tags #{}))
+            {:id id
+             :tags (map #(hash-map :name %1, :urlcode (URLEncoder/encode %1 "UTF-8")) (get meta-dict :tags #{}))
              :date (timef/unparse
                     (timef/formatter (timet/default-time-zone) "YYYY-MM-dd" "YYYY/MM/dd")
                     (timec/from-long (:date meta-dict)))
-             :content html-content })
+             :html-content html-content })
           ))
       (swap! all-article assoc id (select-keys meta-dict [:title :date :tags]))
       id
@@ -106,7 +107,6 @@
   [id-list]
   (if (not (empty? id-list))
   (let [last-tags (reduce #(clojure.set/union %1 %2) #{} (map #(get %1 :tags #{}) (vals (select-keys @all-article id-list))))
-        all-articles (reverse (sort-by :date (map #(assoc (last %1) :urlcode (URLEncoder/encode (str (first %1)) "UTF-8") :id (first %1)) @all-article)))
         all-tags (frequencies (apply concat (map :tags #_(get %1 :tags #{}) (vals @all-article))))
         max-weight (apply max (conj (vals all-tags) 10))]
     ;更新首页
@@ -122,9 +122,17 @@
                       :urlcode (URLEncoder/encode (str (first %1)) "UTF-8")
                       :weight (format "%.1f" (float (+ 1 (* (/ (last %1) max-weight) 5))))
                       ) all-tags)
-           :articles (take 20 all-articles)})))
+           :article-list (take 20 (reverse (sort-by :date
+                (map #(merge (last %1)
+                        {:id (first %1)
+                         :urlid (URLEncoder/encode (first %1) "UTF-8")
+                         :date (timef/unparse
+                                (timef/formatter (timet/default-time-zone) "YYYY-MM-dd" "YYYY/MM/dd")
+                                (timec/from-long (:date (last %1))))
+                         :html-content (:html-content (read-markdown (clojure.java.io/file (str (:input config) "/" (first %1) ".md"))))
+                         }) @all-article))))})))
     ;rss
-    (let [sort-article-list (take 10 all-articles)]
+    (let [sort-article-list (take 10 (reverse (sort-by :date (map #(assoc (last %1) :urlcode (URLEncoder/encode (str (first %1)) "UTF-8") :id (first %1)) @all-article))))]
       (println "->" "/rss.xml")
       (spit (str (:output config) "/rss.xml")
             (rss/channel-xml


use a changeset

use a changeset

--- src/survey/core.clj
+++ src/survey/core.clj
@@ -54,7 +54,9 @@
                    [:groupwork :int :null true]
                    [:birth :int :null true]
                    [:sent :bigint :null true]
-                   [:important :int :null true]
+                   ]))
+(def ct-change2 (ch/add-columns :answers
+                  [[:important :int :null true]
                    [:toomany :int :null true]
                    [:helps_me :int :null true]
                    [:trouble :int :null true]
@@ -63,12 +65,11 @@
                    [:solve_conflicts :int :null true]
                    [:fair :int :null true]
                    [:improving :int :null true]
-                   [:nps :int :null true]
-                   ]))
+                   [:nps :int :null true]]))

 ; recommended: one change per changeset
 (def changeset-1 ["id=1" "author=sulmanen" [ct-change1]])
-
+(def changeset-2 ["id=2" "author=sulmanen" [ct-change2]])

 ; you can add more changesets later to the changelog
 (defchangelog app-changelog "questionmark" [changeset-1])


clean up

clean up

--- src/ttt/handler.clj
+++ src/ttt/handler.clj
@@ -74,15 +74,13 @@

   (defn get-state [current-state field1 field2]
     "given the current state and a board determines state transition"
-    (if (win? field1)
-      :first-player-wins
-      (if (win? field2)
-        :second-player-wins
-        (if (tie? field1 field2)
-          :tie
-          (if (= current-state "first-player-turn")
-            :second-player-turn
-            :first-player-turn)))))
+    (cond
+      (win? field1) :first-player-wins
+      (win? field2) :second-player-wins
+      (tie? field1 field2) :tie
+      (= current-state "first-player-turn") :second-player-turn
+      (= current-state "second-player-turn") :first-player-turn
+      :else (fail :invalid-state)))

   (defn add-and-check [position game]
     "makes a move if the target cell is not occupied"


Add support for writing sorted-map

Add support for writing sorted-map

--- src/yaml/writer.clj
+++ src/yaml/writer.clj
@@ -35,6 +35,11 @@
   clojure.lang.IPersistentCollection
   (encode [data]
     (map encode data))
+  clojure.lang.PersistentTreeMap
+  (encode [data]
+    (into (sorted-map)
+          (for [[k v] data]
+            [(encode k) (encode v)])))
   clojure.lang.Keyword
   (encode [data]
     (name data))


Fix #129 - Make `draft` do the correct thing

--- src/io/perun.clj
+++ src/io/perun.clj
@@ -143,8 +143,9 @@
             updated-files (trace :io.perun/markdown
                                  (pod/with-call-in @pod
                                    (io.perun.markdown/parse-markdown ~md-files ~options)))
-            final-metadata (pm/merge-meta* (pm/get-meta @prev-fs) updated-files)
-            new-fs (pm/set-meta fileset final-metadata)]
+            new-fs (-> fileset
+                       (pm/set-meta (pm/get-meta @prev-fs))
+                       (pm/set-meta updated-files))]
         (reset! prev-fs new-fs)
         new-fs))))

@@ -229,12 +230,9 @@
   "Exclude draft files"
   []
   (boot/with-pre-wrap fileset
-    (let [files         (pm/get-meta fileset)
-          updated-files (->> files
-                             (remove #(true? (:draft %)))
-                             (trace :io.perun/draft))]
-      (perun/report-info "draft" "removed draft files. Remaining %s files" (count updated-files))
-      (pm/set-meta fileset updated-files))))
+    (let [draft-files (filter #(-> % pm/+meta-key+ :draft) (vals (:tree fileset)))]
+      (perun/report-info "draft" "removed %s draft files" (count draft-files))
+      (boot/rm fileset draft-files))))

 (def ^:private +build-date-defaults+
   {:filterer :content})


Count words in original markdown, rather than parsed or rendered content

--- src/io/perun.clj
+++ src/io/perun.clj
@@ -209,12 +209,6 @@
          (perun/report-info "global-metadata" "read global metadata from %s" meta-file)
          (pm/set-global-meta fileset global-meta))))

-(defn- get-meta-contents
-  [fileset filterer]
-  (->> (vals (:tree fileset))
-       (filter (comp filterer pm/+meta-key+))
-       (map (juxt pm/+meta-key+ (comp slurp boot/tmp-file)))))
-
 (def ^:private ttr-deps
   '[[time-to-read "0.1.0"]])

@@ -227,7 +221,9 @@
   (let [pod     (create-pod ttr-deps)
         options (merge +ttr-defaults+ *opts*)]
     (boot/with-pre-wrap fileset
-      (let [meta-contents (get-meta-contents fileset (:filterer options))
+      (let [meta-contents (->> (vals (:tree fileset))
+                               (filter (comp (:filterer options) pm/+meta-key+))
+                               (map (juxt pm/+meta-key+ (comp slurp boot/tmp-file))))
             updated-metas (trace :io.perun/ttr
                                  (pod/with-call-in @pod
                                    (io.perun.ttr/calculate-ttr ~meta-contents)))]
@@ -242,7 +238,14 @@
   [_ filterer FILTER code "predicate to use for selecting entries (default: `:has-content`)"]
   (let [options (merge +word-count-defaults+ *opts*)]
     (boot/with-pre-wrap fileset
-      (let [meta-contents (get-meta-contents fileset (:filterer options))
+      (let [meta-contents (->> (vals (:tree fileset))
+                               (filter (comp (:filterer options) pm/+meta-key+))
+                               (map #(let [meta (pm/+meta-key+ %)
+                                           file (if-let [original-path (:original-path meta)]
+                                                  (boot/tmp-get fileset original-path)
+                                                  %)
+                                           content (-> file boot/tmp-file slurp)]
+                                       [meta content])))
             updated-metas (trace :io.perun/word-count
                                  ;; word count doesn't have any special dependencies,
                                  ;; so we can just reuse the filedata pod


Story ID: RPC-236 Summary: fixed indentation, oops

--- src/untangled_spec/reporters/browser.cljs
+++ src/untangled_spec/reporters/browser.cljs
@@ -35,9 +35,9 @@
                (let [{:keys [message actual expected]} (om/props this)]
                  (->> (dom/tbody nil
                                  (<result-line> {:title "Actual"
-                                                     :value actual})
+                                                 :value actual})
                                  (<result-line> {:title "Expected"
-                                                     :value (or expected "")}))
+                                                 :value (or expected "")}))
                       (dom/table nil)
                       (dom/div nil (when message (dom/h3 nil message)))
                       (dom/li nil)))))


Attach data-specs based on version for XML feeds

--- src/vip/data_processor/validation/xml.clj
+++ src/vip/data_processor/validation/xml.clj
@@ -244,7 +244,9 @@
     (with-open [reader (util/bom-safe-reader xml-file)]
       (let [vip-object (xml/parse reader)
             version (get-in vip-object [:attrs :schemaVersion])]
-        (assoc ctx :spec-version version)))))
+        (-> ctx
+            (assoc :spec-version version)
+            (assoc :data-specs (get data-spec/version-specs version)))))))

 (defn unsupported-version [{:keys [spec-version] :as ctx}]
   (assoc ctx :stop (str "Unsupported XML version: " spec-version)))


Reduce time allowed for job to finish to 20 mins

--- src/onyx_jepsen/onyx_client.clj
+++ src/onyx_jepsen/onyx_client.clj
@@ -107,7 +107,7 @@
                                   (catch Throwable t
                                     (assoc op :type :info :value t))))

-        :close-ledgers-await-completion (timeout 2000000
+        :close-ledgers-await-completion (timeout 1000000
                                                  (assoc op :type :info :value :timed-out)
                                                  (try
                                                    (assoc op


Extract usages

Extract usages

--- src/pathfinder/analyze/java.clj
+++ src/pathfinder/analyze/java.clj
@@ -2,59 +2,72 @@
   (:require [pathfinder.analyze.analyzer :refer [Analyzer]])
   (:import [com.github.javaparser JavaParser]))

-(defn- extract-from-node [node]
-  {:pos {:line (.getBeginLine node)
-         :column (.getBeginColumn node)
-         :end-line (.getEndLine node)
-         :end-column (.getEndColumn node)}})
+(defn- extract-pos-from-node [node]
+  {:line (.getBeginLine node)
+   :column (.getBeginColumn node)
+   :end-line (.getEndLine node)
+   :end-column (.getEndColumn node)})

-(defmulti extract
+(defmulti extract-defn
   "Extract metadata from a node of the AST."
   (fn [context type] (class type)))

-(defmethod extract com.github.javaparser.ast.CompilationUnit
+(defmethod extract-defn com.github.javaparser.ast.CompilationUnit
   [_ compilation-unit]
   ;; JLS specifies zero-or-one package decls per file
   (let [pkg (-> compilation-unit .getPackage)
         pkg-name (if pkg (str (.getName pkg)) "")]
     (->> compilation-unit
          .getTypes
-         (mapcat (partial extract pkg-name)))))
+         (mapcat (partial extract-defn pkg-name)))))

-(defmethod extract com.github.javaparser.ast.body.ClassOrInterfaceDeclaration
+(defmethod extract-defn com.github.javaparser.ast.body.ClassOrInterfaceDeclaration
   [pkg-name type]
   (let [class-name (str pkg-name (if (empty? pkg-name) "" ".") (.getName type))]
     (conj
-     (mapcat (fn [member] (extract class-name member)) (.getMembers type))
-     (merge {:name class-name
-             :type (if (.isInterface type) :interface :class)}
-            (extract-from-node type)))))
+     (mapcat (fn [member] (extract-defn class-name member)) (.getMembers type))
+     {:name class-name
+      :type (if (.isInterface type) :interface :class)
+      :pos (extract-pos-from-node type)})))

-(defmethod extract com.github.javaparser.ast.body.MethodDeclaration
+(defmethod extract-defn com.github.javaparser.ast.body.MethodDeclaration
   [class-name method]
-  [(merge {:name (str class-name "." (.getName method))
-           :type :method}
-          (extract-from-node method))])
+  [{:name (str class-name "." (.getName method))
+    :type :method
+    :pos (extract-pos-from-node method)}])

-(defmethod extract com.github.javaparser.ast.body.ConstructorDeclaration
+(defmethod extract-defn com.github.javaparser.ast.body.ConstructorDeclaration
   [class-name constructor]
-  [(merge {:name (str class-name "." (.getName constructor))
-           :type :constructor}
-          (extract-from-node constructor))])
+  [{:name (str class-name "." (.getName constructor))
+    :type :constructor
+    :pos (extract-pos-from-node constructor)}])

-(defmethod extract com.github.javaparser.ast.body.EnumDeclaration
+(defmethod extract-defn com.github.javaparser.ast.body.EnumDeclaration
   [name enum]
-  [(merge {:name (str name "." (.getName enum))
-           :type :enum}
-          (extract-from-node enum))])
+  [{:name (str name "." (.getName enum))
+    :type :enum
+    :pos (extract-pos-from-node enum)}])

-(defmethod extract com.github.javaparser.ast.body.AnnotationDeclaration
+(defmethod extract-defn com.github.javaparser.ast.body.AnnotationDeclaration
   [name annotation]
-  [(merge {:name (str name "." (.getName annotation))
-           :type :annotation}
-          (extract-from-node annotation))])
+  [{:name (str name "." (.getName annotation))
+    :type :annotation
+    :pos (extract-pos-from-node annotation)}])

-(defmethod extract :default [_ _] [])
+(defmethod extract-defn :default [_ _] [])
+
+(defn- extract-usages [node]
+  (if (instance? com.github.javaparser.ast.expr.MethodCallExpr node)
+    (conj
+     (mapcat extract-usages (.getChildrenNodes node))
+     {:name (.getName node)
+      :pos (extract-pos-from-node node)})
+    (mapcat extract-usages (.getChildrenNodes node))))
+
+(defn- group-usages [usages]
+  (->> usages
+       (group-by :name)
+       (map (fn [[k v]] {:name k :pos (map :pos v)}))))

 (defn- parse
   "Take source as a string and extract as much info as possible from
@@ -64,9 +77,8 @@
                              (.getBytes "UTF-8")
                              java.io.ByteArrayInputStream.
                              (JavaParser/parse "UTF-8"))]
-    {:definitions (extract nil compilation-unit)
-     ;; TODO:
-     :usages []}))
+    {:definitions (extract-defn nil compilation-unit)
+     :usages (-> compilation-unit extract-usages group-usages)}))

 (deftype JavaHeuristicAnalyzer []
   Analyzer


fixed docstring in :code-first

fixed docstring in :code-first

--- src/push/types/modules/code.clj
+++ src/push/types/modules/code.clj
@@ -182,8 +182,7 @@

 (def code-first (t/simple-1-in-1-out-instruction
-  "`:code-first` examines the top `:code` item to determine if it's a Collection. If
-  it is, the function returns its first item, otherwise the item itself it returned."
+  "`:code-first` examines the top `:code` item to determine if it's a code block (not a vector, map, record or other collection type!) If it is, the function returns its first item, otherwise the item itself it returned."
   :code "first" #(if (seq? %) (first %) %)))


load-image take variable number of paths

--- src/silly_image_store/store.clj
+++ src/silly_image_store/store.clj
@@ -1,10 +1,10 @@
 (ns silly-image-store.store
   (:require [clojure.java.io :as io]))

-(defn load-image [basedir filename]
-  (let [file (io/file (str basedir filename))]
+(defn load-image [& paths]
+  (let [file (io/file (apply str paths))]
     (if (.exists file) file nil)))

 (defn list-images [basedir]
-  (let [files (.listFiles (io/file basedir))]
+  (let [files (.listFiles (load-image basedir))]
     (map #(.getName %) files)))


Choose correct :jvm-opts automatically

Choose correct :jvm-opts automatically

--- resources/leiningen/new/play_cljc/project.clj
+++ resources/leiningen/new/play_cljc/project.clj
@@ -4,8 +4,9 @@
   :clean-targets ^{:protect false} ["target"]
   :dependencies [[org.clojure/clojure "1.10.1"]
                  [edna "1.6.0"]]
-  ; on Mac OS, you need to uncomment this!
-  ;:jvm-opts ["-XstartOnFirstThread"]
+  :jvm-opts ~(if (= "Mac OS X" (System/getProperty "os.name"))
+               ["-XstartOnFirstThread"]
+               [])
   :profiles {:dev {:main {{name}}.start-dev
                    :dependencies [[paravim "RELEASE"]
                                   [orchestra "2018.12.06-2"]


Work in progress physics.

Work in progress physics.

--- ClojureScript/hello.cljs
+++ ClojureScript/hello.cljs
@@ -13,6 +13,36 @@

 (defn print-to-log [v]
     (.log js/console v))
+
+(def vec- (partial map -))
+(def vec+ (partial map +))
+(defn vec* [v s] (map * v (repeat s)))
+(def magnitude-squared (comp (partial apply +) (partial map #(* % %))))
+(def magnitude (comp Math/sqrt magnitude-squared))
+(def normalize (comp (partial apply vec*) (juxt identity (comp (partial / 1.0) magnitude))))
+
+(defn calculate-force [node-a node-b rest-length strength]
+    (let [a-b (vec- node-a node-b)
+        pressure (* (- rest-length (magnitude a-b)) strength)
+        force (vec* (normalize a-b) pressure)]
+            force))
+
+(defn calculate-node-forces [nodes springs]
+    (loop [forces {} springs springs]
+        (if (empty? springs) forces
+            (let [
+                [s & r] springs
+                node-a-id (s :node-a)
+                node-b-id (s :node-b)
+                force (calculate-force (nodes node-a-id) (nodes node-b-id) (:rest-length s) (:strength s))]
+                (recur
+                    (assoc forces
+                        node-a-id (vec+ (get forces node-a-id [0 0]) force)
+                        node-b-id (vec- (get forces node-b-id [0 0]) force))
+                    r)))))
+
+(print-to-log
+    (pr-str (calculate-node-forces {:t [1 1] :u [2 3] } [{:node-a :t :node-b :u :rest-length 2.0 :strength 5.0}] )))

 (defn input-event [input-state-ref event]
     (swap! input-state-ref


Adds get-phrase function.

Adds get-phrase function.

--- src/cadence/model.clj
+++ src/cadence/model.clj
@@ -18,3 +18,5 @@
 (defn add-user [user]
   (if (is-valid/user? user)
     (mc/insert "users" user)))
+
+(defn get-phrase [] "passwords are so completely last decade")


Better text

Better text

--- src/clj/game/core.clj
+++ src/clj/game/core.clj
@@ -1127,8 +1127,8 @@
         (resolve-ability state side ab card targets))))

 (defn turn-message [state side start-of-turn]
-  (let [pre (if start-of-turn "startet" "is ending")
-        hand (if (= side :runner) "Grip" "HQ")
+  (let [pre (if start-of-turn "started" "is ending")
+        hand (if (= side :runner) "their Grip" "HQ")
         cards (count (get-in @state [side :hand]))
         credits (get-in @state [side :credit])
         text (str pre " their turn with " credits " [Credit] and " cards " cards in " hand)]


fix compile error

fix compile error

--- src/clj/hsm/utils.clj
+++ src/clj/hsm/utils.clj
@@ -132,5 +132,5 @@
 (defn vec2? [x] (nvec? 2 x))
 (defn vec3? [x] (nvec? 3 x))
 (defn nnil=
-  ([x y]        (and (nnil? x) (= x y)))
-  ([x y & more] (and (nnil? x) (apply = x y more))))+  ([x y]        (and (!nil? x) (= x y)))
+  ([x y & more] (and (!nil? x) (apply = x y more))))


Adding status message to travis

Adding status message to travis

--- src/cljs_dev/dev.cljs
+++ src/cljs_dev/dev.cljs
@@ -35,3 +35,5 @@
     (js/setTimeout
       #(run-tests 'hyjinks.browser.dev)
       1000)))
+
+(println "Is this working or not?")


Fix a comment typo

Fix a comment typo

--- src/mdr2/dtb.clj
+++ src/mdr2/dtb.clj
@@ -94,7 +94,7 @@
     durationInSeconds))

 (defn audio-length
-  "Return the audio legth for a given DAISY Talking Book in seconds"
+  "Return the audio length for a given DAISY Talking Book in seconds"
   [dtb]
   ;; unfortunatelly getting the audio length of an mp3 file doesn't
   ;; seem to be supported at the moment. You need to have the proper


work on options parsing

work on options parsing

--- src/nml/core.clj
+++ src/nml/core.clj
@@ -4,33 +4,29 @@
   (:require [clojure.tools.cli :as cli   ])
   (:gen-class))

-(declare nk nkv nmlget nmlname nmlset nmlstr)
+(declare nmlget nmlname nmlset nmlstr)
+
+; defs

 (def debug false)

 (def parse (insta/parser (clojure.java.io/resource "grammar")))

-(defn exe [tree commands]
-  (if (empty? commands)
-    tree
-    (let [cmd (first  commands)
-          arg (second commands)
-          rst (drop 2 commands)]
-      (case cmd
-        "--get" (let [[nml key    ] (nk  arg)] (exe (nmlget tree nml key)     rst))
-        "--set" (let [[nml key val] (nkv arg)] (exe (nmlset tree nml key val) rst))))))
+;; defns
+
+;;(defn exe [tree commands]
+;; (if (empty? commands)
+;;   tree
+;;   (let [cmd (first  commands)
+;;         arg (second commands)
+;;         rst (drop 2 commands)]
+;;     (case cmd
+;;       "--get" (let [[nml key    ] (parse-get arg)] (exe (nmlget tree nml key)     rst))
+;;       "--set" (let [[nml key val] (parse-set arg)] (exe (nmlset tree nml key val) rst))))))

 (defn fail [& msg]
   (if msg (println (apply str msg)))
   (System/exit 1))
-
-(defn nk [x]
-  (string/split x #":" 2))
-
-(defn nkv [x]
-  (let [[nmlkey val] (string/split x #"=" 2)
-        [nml key] (nk nmlkey)]
-    [nml key val]))

 (defn nmlget [tree nml key]
   (let [stmt     (last (filter #(= (nmlname %) nml) (rest tree)))
@@ -101,6 +97,8 @@
   (try (parse (slurp fname))
        (catch Exception e (fail "Could not open namelist file '" fname "'"))))

+;; cli
+
 (defn assoc-get [m k v]
   (let [gets (:get m [])]
     (assoc m :get (into gets [v]))))
@@ -109,10 +107,20 @@
   (let [sets (:set m [])]
     (assoc m :set (into sets [v]))))

+(defn parse-get [x]
+  (string/split x #":" 2))
+
+(defn parse-set [x]
+  (let [[nmlkey val] (string/split x #"=" 2)
+        [nml key] (parse-get nmlkey)]
+    [nml key val]))
+
 (def cliopts
-  [["-g" "--get n:k"   "get value of key 'k' in namelist 'n'"        :assoc-fn assoc-get :parse-fn nk ]
-   ["-s" "--set n:k=v" "set value of key 'k' in namelist 'n' to 'v'" :assoc-fn assoc-set :parse-fn nkv]])
+  [["-g" "--get n:k"   "get value of key 'k' in namelist 'n'"        :assoc-fn assoc-get :parse-fn parse-get ]
+   ["-s" "--set n:k=v" "set value of key 'k' in namelist 'n' to 'v'" :assoc-fn assoc-set :parse-fn parse-set]])

+;; main
+
 (defn -main [& args]
   (alter-var-root #'*read-eval* (constantly false))
   (let [{:keys [options arguments summary]} (cli/parse-opts args cliopts)


Start passing a vector of scopes in wrap-auth

--- src/gogolica/auth.clj
+++ src/gogolica/auth.clj
@@ -5,7 +5,8 @@
             [clj-time.core :as time]
             [clojure.core.cache :as cache]
             [buddy.core.keys :as keys]
-            [cheshire.core :refer [parse-string generate-string]]))
+            [cheshire.core :refer [parse-string generate-string]]
+            [clojure.string :as str]))

 ;;;; Key management
@@ -58,6 +59,8 @@
                :iat (time/now)}]
     (jwt/sign claim privkey {:alg :rs256})))

+;; TODO: now the caching happens for each scope string, which may contain more than
+;; one scope. We should instead cache scopes singularly.
 (defn get-oauth2-token
   "Given a scope string, returns a cached OAuth2 token, or requests a new one
   if the cached one (for that scope) is expired"
@@ -76,8 +79,8 @@
 ;;;; Requests utils

 (defn wrap-auth
-  "Given a request map, enriches it with a new OAuth2 token."
-  [req-map scope]
+  "Given a request map and a vector of scopes, enriches it with a new OAuth2 token."
+  [req-map scopes]
   (assoc-in req-map
             [:headers "Authorization"]
-            (str "Bearer " (get-oauth2-token scope))))
+            (str "Bearer " (get-oauth2-token (str/join " " scopes)))))


Remove cluster name in repo connection.

Remove cluster name in repo connection.

--- src/haystack/repo.clj
+++ src/haystack/repo.clj
@@ -11,7 +11,7 @@
 (def index-name "searchecommerce")

 (def repo (esr/connect srv
-                       {:cluster.name "ek"
+                       {; :cluster.name "ek"
                         :connection-manager (clj-http.conn-mgr/make-reusable-conn-manager
                                              {:timeout 10})}))


Enable mainfunction on start

Enable mainfunction on start

--- src/discuss/core.cljs
+++ src/discuss/core.cljs
@@ -15,7 +15,7 @@
 ;; Initialization
 (defn main []
   (com/init!))
-;(main)
+(main)

 ;; Register
 (om/root views/main-view lib/app-state


master-key-bits, salt-bits

master-key-bits, salt-bits

--- src/icecap/crypto.clj
+++ src/icecap/crypto.clj
@@ -17,9 +17,17 @@
   "The size of the master key, in bits."
   256)

+(def master-key-bytes
+  "See master-key-bits."
+  (/ master-key-bits 8))
+
 (def salt-bits
   "The size of the salt, in bits."
   256)
+
+(def salt-bytes
+  "See salt-bits."
+  (/ salt-bits 8))

 (def index-bits
   "The size of the index, in bits.


CMR-4850: Fixed the OPTIONS bug. (#513)

CMR-4850: Fixed the OPTIONS bug. (#513)

* CMR-4850: Fixed the OPTIONS bug.

* CMR-4850: Fixed a typo.

--- common-app-lib/src/cmr/common_app/api/health.clj
+++ common-app-lib/src/cmr/common_app/api/health.clj
@@ -55,6 +55,7 @@
   takes a request-context as a parameter to determine if the application and its dependencies are
   working as expected."
   [health-fn]
-  (OPTIONS "/health" req common-routes/options-response)
-  (GET "/health" {:keys [request-context]}
-    (get-app-health request-context health-fn)))
+  (context "/health" []
+    (OPTIONS "/" req common-routes/options-response)
+    (GET "/" {:keys [request-context]}
+      (get-app-health request-context health-fn))))


Changed structure of adjacency-matricies

I changed the structure of the matricies from vector of vectors to Java-Arrays.
With the use of type-hints, this results in an improvement in performance.

--- src/main/clojure/conexp/fca/applications/socialanalytics.clj
+++ src/main/clojure/conexp/fca/applications/socialanalytics.clj
@@ -24,7 +24,7 @@
   attributes as vertices and the edges defined via the incidence-relation.
   The edges of the graph have no direction, therefore just the upper entrys
   a_ij with i<=j have to be stored."
-  [context]
+  ^"[[I" [context]
   (assert (context? context) "Argument must be a formal context!")
   (let [objects (vec (objects context))
         attributes (vec (attributes context))
@@ -35,22 +35,22 @@
                                  ;; in the adjacency-matrix: Decides with which
                                  ;; of the `attributes' the object has an edge with.
                                  ;; Starts the row with `i' zeros.
-                                 (vec (concat (take i (repeat 0))
-                                              (map
-                                                (fn [attribute]
-                                                  (if (incident? context object attribute)
-                                                    1
-                                                    0))
-                                                attributes))))]
-    (vec (concat
-           ;; Concat the rows corresponding to an object...
-           (map #(compute-row-for-object (objects %)
-                                         attributes
-                                         (- m %))
-                (range 0 m))
-           ;; ... with the rows correpsonding to attributes.
-           (map #(vec (take (- n %) (repeat 0)))
-                (range 0 n))))))
+                                 (concat (take i (repeat 0))
+                                         (map
+                                           (fn [attribute]
+                                             (if (incident? context object attribute)
+                                               1
+                                               0))
+                                           attributes)))]
+    (into-array (map int-array (concat
+                                 ;; Concat the rows corresponding to an object...
+                                 (map #(compute-row-for-object (objects %)
+                                                               attributes
+                                                               (- m %))
+                                      (range 0 m))
+                                 ;; ... with the rows correpsonding to attributes.
+                                 (map #(take (- n %) (repeat 0))
+                                      (range 0 n)))))))

 (defn- compute-row-for-object-or-attribute-matrix
   "Tis is a helper-function to initialize the adjacency-matrix
@@ -72,16 +72,17 @@
   objects share an edge if they share an attribute.
   The edges of the graph have no direction, therefore just
   the upper entrys a_ij with i<=j have to be stored."
-  [context]
+  ^"[[I" [context]
   (let [object-derivations-of-context (mapv
                                         #(object-derivation context #{%})
                                         (objects context))
         n (count object-derivations-of-context)]
-    (mapv
-      #(compute-row-for-object-or-attribute-matrix
-         (nth object-derivations-of-context %)
-         (drop % object-derivations-of-context))
-      (range 0 n))))
+    (into-array
+      (map int-array (map
+                       #(compute-row-for-object-or-attribute-matrix
+                          (nth object-derivations-of-context %)
+                          (drop % object-derivations-of-context))
+                       (range 0 n))))))

 (defn attribute-projection-adjacency-matrix
   "Computes the adjacency-matrix for the graph, which has
@@ -89,16 +90,16 @@
   share an edge if they share an object.
   The edges of the graph have no direction, therefore just the upper
   entrys a_ij with i<=j have to be stored"
-  [context]
+  ^"[[I"[context]
   (let [attribute-derivations-of-context (mapv
                                            #(attribute-derivation context #{%})
                                            (attributes context))
         n (count attribute-derivations-of-context)]
-    (mapv
-      #(compute-row-for-object-or-attribute-matrix
-         (nth attribute-derivations-of-context %)
-         (drop % attribute-derivations-of-context))
-      (range 0 n))))
+    (into-array (map int-array (map
+                                 #(compute-row-for-object-or-attribute-matrix
+                                    (nth attribute-derivations-of-context %)
+                                    (drop % attribute-derivations-of-context))
+                                 (range 0 n))))))

 ;;; Functions to compute adjacency-maps.
 ;;; The following functions take a context as argument and return
@@ -215,28 +216,35 @@

 ;;; Average-shortest-path

+;;The following two marcros are adapted from
+;;http://clojure-goes-fast.com/blog/java-arrays-and-unchecked-math/.
+(defmacro two-dimensional-aget [a i j]
+  `(aget ^"[I" (aget ~a ~i) ~j))
+
+(defmacro two-dimensional-aset [a i j v]
+  `(aset ^"[I" (aget ~a ~i) ~j ~v))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defn- floyd-step
   "This is a helper-function for average-shortest-path:
   Do one overwriting in the floyd-algorithm, see
   https://de.wikipedia.org/wiki/Algorithmus_von_Floyd_und_Warshall or
   https://en.wikipedia.org/wiki/Floyd-Warshall_algorithm for Details."
-  [matrix k i j]
+  [^"[[I" matrix ^Integer k ^Integer i ^Integer j]
   (assert (<= i j) "No computation under the diagonalelements possible!")
-  (let [A_ij (nth (nth matrix i) (- j i))
+  (let [A_ij (two-dimensional-aget matrix i (- j i))
         A_ik (if (<= i k)
-               (nth (nth matrix i) (- k i))
-               (nth (nth matrix k) (- i k)))
+               (two-dimensional-aget matrix i (- k i))
+               (two-dimensional-aget matrix k (- i k)))
         A_kj (if (<= k j)
-               (nth (nth matrix k) (- j k))
-               (nth (nth matrix j) (- k j)))
-        newvalue (cond
-                   (and (= A_ij 0) (or (= A_ik 0) (=  A_kj 0))) 0
-                   (= A_ij 0) (+ A_ik A_kj)
-                   (or (= A_ik 0) (=  A_kj 0)) A_ij
-                   :else (min A_ij (+ A_ik A_kj)))]
-    (assoc matrix
-           i
-           (assoc (nth matrix i) (- j i) newvalue))))
+               (two-dimensional-aget matrix k (- j k))
+               (two-dimensional-aget matrix j (- k j)))
+        ^Integer newvalue (cond
+                            (and (= A_ij 0) (or (= A_ik 0) (=  A_kj 0))) 0
+                            (= A_ij 0) (+ A_ik A_kj)
+                            (or (= A_ik 0) (=  A_kj 0)) A_ij
+                            :else (min A_ij (+ A_ik A_kj)))]
+    (two-dimensional-aset matrix i (- j i) newvalue)))

 (defn average-shortest-path
   "Computes the average-shortest path for a given `context' and a `projection'.
@@ -253,26 +261,15 @@
   in the graph, nil is returned."
   [context projection]
   (assert (context? context) "Argument is not a formal context!")
-  (let [matrix (projection context)
+  (let [^"[[I" matrix (projection context)
         n (count matrix)
-        paths (loop [k 0
-                     i 0
-                     j 0
-                     matrix matrix]
-                (if (< k n)
-                  (if (< i n)
-                    (if (< j n)
-                      (recur k i (inc j) (floyd-step matrix k i j))
-                      (recur k (inc i) (inc i) matrix))
-                    (recur (inc k) 0 0 matrix))
-                  ;;If we are finished, we discard all
-                  ;; entrys of length 0 (they stand for vertices
-                  ;; which are not connected!) and all shortest-path-lengths
-                  ;; of a vertex to itself.
-                  (remove zero?
-                          (mapcat
-                            #(drop 1 %)
-                            matrix))))]
+        paths (do
+                (dorun
+                  (for [k (range 0 n) i (range 0 n) j (range i n)]
+                    (floyd-step matrix k i j)))
+                (remove zero?
+                        (mapcat #(drop 1 %)
+                                matrix)))]
     (if (empty? paths)
       nil
       (/ (reduce + paths) (count paths)))))


style license

style license

--- src/site/core.clj
+++ src/site/core.clj
@@ -85,6 +85,12 @@
                   :box-shadow "0 2px 5px rgba(0,0,0,0.5)"
                   :border-radius "30px"
                   :$padding [1 3]}]
+     [:.or {:$text 0.8 :$color :gray :$margin [0 1]}]
+     [:.license {:$color :blue
+                 :$text 1
+                 :$border [:bottom :dashed 1 :blue]
+                 :padding-bottom "4px"
+                 }]
      [:.banner {:$height 30}]
      [:p {:color "#555" :$text [1 1.5 200] :$width 56}]]]
    [:div.container


SQUASHED THE BUG, FIRST VERSION GOOD TO GO

--- src/kushana/core.cljs
+++ src/kushana/core.cljs
@@ -3,8 +3,6 @@
             [kushana.scene :refer [with-ids]]
             [cljs.core.async :refer [put!]])
   (:use-macros [kushana.scene :only [defscene]]))
-
-(enable-console-print!)

 (defscene scene
   (with-ids
@@ -21,17 +19,17 @@
       :name "ground1"
       :width 6
       :height 6
-      :rotation [0.2 0.2 0.2]
+      :rotation [0 0 0]
       :subdivisions 2]
      [:camera/free
-      :name "camera2"
+      :name "camera1"
       :set-target [0 0 0]
-      :direction [0 5 -10]
+      :position [0 5 -10]
       :attach-control ["renderCanvas" true]]])
   (fn [scene-graph input]
     (if (= (first input) :new-scene)
-        (second input)
-        scene-graph))
+      (second input)
+      scene-graph))
   :clearColor [0.2 0.3 0.4])

 (defonce engine
@@ -41,8 +39,5 @@
    :antialias true
    :resize true))

-(put! engine "Hi!")
-
-(defn on-js-reload []
-  (println "this is borked :c")
+(defn on-js-reload []
   (put! engine [:new-scene scene]))


clean up

clean up

--- src/leiningen/git.clj
+++ src/leiningen/git.clj
@@ -131,11 +131,9 @@
        (filter #(ns/sync-resources? projects-desc %))))

 (defn commit-project! [project commit-msg projects-desc]
-  (let [resources-to-add (sync-resources-of
-                          (get-changed-files)
-                          (get-untracked-files)
-                          projects-desc)
-        add-status (map add resources-to-add)
+  (let [add-status (->> projects-desc
+                        (sync-resources-of (get-changed-files) (get-untracked-files))
+                        (map add))
         failed-add-actions (filter #(= % :failed) add-status)]
     (cond
       (zero? (count add-status)) {:project        project


More functional approach to day 4.

More functional approach to day 4.

--- clojure/src/advent2017/day4.clj
+++ clojure/src/advent2017/day4.clj
@@ -3,13 +3,13 @@

 (defn solve [xform lines]
-  (let [counter (atom 0)]
-    (doseq [line lines
-            :let [words (map xform (->words line))]]
-      (when (= (count words)
-               (count (set words)))
-        (swap! counter inc)))
-    @counter))
+  (reduce (fn [counter words]
+            (if (= (count words)
+                   (count (set words)))
+              (inc counter)
+              counter))
+          0
+          (map (comp xform ->words) lines)))

 (def solve-1 (partial solve identity))
 (def solve-2 (partial solve frequencies))


Fix incorrect test numbering

Fix incorrect test numbering

--- clojure/test/euler/004_test.clj
+++ clojure/test/euler/004_test.clj
@@ -2,7 +2,7 @@
   (:require [clojure.test :refer :all]
             [euler.004 :refer :all]))

-(deftest euler-003
+(deftest euler-004
   (testing "palindromic-number?"
     (is (false? (palindromic-number? 10)))
     (is (false? (palindromic-number? 102)))


added keystore password and format

added keystore password and format

--- src/link/socketio.clj
+++ src/link/socketio.clj
@@ -44,6 +44,8 @@

 (defn socketio-server [port handlers
                        & {:keys [ssl-keystore-in
+                                 ssl-keystore-password
+                                 ssl-keystore-format
                                  hostname
                                  heartbeat-timeout
                                  heartbeat-interval
@@ -58,6 +60,14 @@
     (when ssl-keystore-in
       (.setKeyStore ^Configuration config
                     ssl-keystore-in))
+
+    (when ssl-keystore-password
+      (.setKeyStorePassword ^Configuration config
+                            ssl-keystore-password))
+
+    (when ssl-keystore-format
+      (.setKeyStoreFormat ^Configuration config
+                          ssl-keystore-format))

     (when heartbeat-timeout
       (.setHeartbeatTimeout ^Configuration config


fixed issue #1165 - Tabsets don't properly resize after being removed

--- src/lt/objs/tabs.cljs
+++ src/lt/objs/tabs.cljs
@@ -444,6 +444,7 @@
         (add! t to-ts))
       (object/update! multi [:tabsets] #(vec (remove #{ts} %)))
       (object/destroy! ts)
+      (equalize-tabset-widths)
       (object/raise to-ts :active))))

 (defn menu! [obj ev]


Don't get in the way of body responses

Don't get in the way of body responses

(that we don't understand)

See: http://stackoverflow.com/questions/33805901/clojure-use-a-core-async-channel-with-yada-aleph

--- src/yada/body.clj
+++ src/yada/body.clj
@@ -88,18 +88,6 @@
   (to-body [b _] b)
   (content-length [b] (.remaining b))

-  java.io.BufferedInputStream
-  (to-body [b _] b)
-  (content-length [_] nil)
-
-  java.io.Reader
-  (to-body [r _] r)
-  (content-length [_] nil)
-
-  SourceProxy
-  (to-body [s _] s)
-  (content-length [_] nil)
-
   Mult
   (to-body [mlt representation]
     (let [ch (a/chan 10)]
@@ -111,10 +99,9 @@
   (to-body [ch representation] (render-seq ch representation))
   (content-length [_] nil)

+  ;; The default pass-through to the web server
   Object
-  ;; We could implement to-representation here as a pass-through, but it
-  ;; is currently useful to have yada fail on types it doesn't know how to
-  ;; represent.
+  (to-body [s _] s)
   (content-length [_] nil)

   nil


Timer bars can now be [right] clicked off.

--- src/yaqp/core.clj
+++ src/yaqp/core.clj
@@ -5,11 +5,11 @@
    [yaqp.parse :as p]
    [clj-http.client :as client]
    [clojure.string :as str]
-   [simple-time.core :as t])
+   [simple-time.core :as t]
+   [seesaw.mouse :as mouse])
   (:use
    [yaqp.debug]
-   [seesaw.core :only [listen]]
-   [seesaw.mouse :only [location]])
+   [seesaw.core :only [listen]])
   (:import
    [yaqp.gui Bar]
    [java.io File]
@@ -25,7 +25,7 @@
          :events []
          ;;:log-path "/home/makoco/eq-logs/eqlog_Hadiar_project1999.txt"
          :log-path "C:/dev/yaqp/log/eqlog_Hadiar_project1999.txt"
-         :timers []}))
+         :timers {}}))

 (defprotocol Timed
   (expired? [t now])
@@ -46,8 +46,7 @@
   (let [target (apply str (take 20 target))
         text (str text " " target)
         id (.toString (java.util.UUID/randomUUID))]
-    (swap! app update-in [:timers] conj
-           (Timer. id text (t/now) (tr/parse-time duration) opts))))
+    (swap! app assoc-in [:timers id] (Timer. id text (t/now) (tr/parse-time duration) opts))))

 (defn clear-timers []
   (swap! app update-in [:timers]
@@ -88,10 +87,9 @@
     "tell your guild," (pipe "chat.txt" {:fg "green" :bold true})))

 (defn handle-line [line]
-  (log (str "got line " line))
+  ;(log (str "got line " line))
   (when-not (str/blank? line)
-    (p/parse-line line (partition 2 triggers)))
-  )
+    (p/parse-line line (partition 2 triggers))))

 (defn watch []
   (let [watcher (proxy [TailerListenerAdapter] []
@@ -101,20 +99,23 @@

 (defn tick [app]
   ;; iterate through timers, draw fraction according to diff from (now) - start, duration
-  (let [now (t/now)
-        [dead-timers live-timers] (split-with #(expired? % now) (:timers @app))]
+  (let [timers (-> @app :timers vals)
+        now (t/now)
+        [dead-timers live-timers] (split-with #(expired? % now) timers)]
     (gui/render-bars
-     (->> (:timers @app)
+     (->> timers
           (filter #(not (expired? % now)))
           (map
            (fn [{:keys [id name opts] :as timer} ]
              (Bar. (fraction timer now) name (assoc opts :timer-id id))))))
-    (clear-timers)
+    ;;(clear-timers)
     ;(swap! app update-in [:timers] #(remove #{dead-timers} %))
+    (swap! app update-in [:timers] #(apply dissoc % (map :id dead-timers)))
     ))

 (defn on-bar-frame-mouse-click [e]
-  (log (gui/bar-clicked? (location e))))
+  (when (= :right (mouse/button e))
+    (swap! app update-in [:timers] dissoc (gui/bar-clicked? (mouse/location e)))))

 (defn run []
   (when-not (:kill @app)


Words can not be deleted or undeleted on the 'search' page

--- src/zg/server.clj
+++ src/zg/server.clj
@@ -75,24 +75,6 @@
     [request title emender-page]
     (let [params         (:params request)]
         (finish-processing request nil nil nil nil title emender-page :whitelist)))
-
-(defn process-whitelist
-    "Function that prepares data for the whitelist front page."
-    [request title emender-page]
-    (let [params         (:params request)
-          word           (get params "word")
-          search-results (if (not (empty? word))
-                             (db-interface/read-words-for-pattern word :whitelist))]
-        (finish-processing request search-results nil nil nil title emender-page :whitelist)))
-
-(defn process-blacklist
-    "Function that prepares data for the blacklist front page."
-    [request title emender-page]
-    (let [params         (:params request)
-          word           (get params "word")
-          search-results (if (not (empty? word))
-                             (db-interface/read-words-for-pattern word :blacklist))]
-        (finish-processing request search-results nil nil nil title emender-page :blacklist)))

 (defn process-atomic-typos
     "Function that prepares data for the Atomic typos front page."
@@ -193,6 +175,28 @@
               (db-interface/delete-word to-delete mode))
           (if to-undelete
               (db-interface/undelete-word to-undelete mode))))
+
+(defn process-whitelist
+    "Function that prepares data for the whitelist front page."
+    [request title emender-page]
+    ; perform the operation selected by user on the web UI (delete, undelete etc.)
+    (perform-operation request :whitelist)
+    (let [params         (:params request)
+          word           (get params "word")
+          search-results (if (not (empty? word))
+                             (db-interface/read-words-for-pattern word :whitelist))]
+        (finish-processing request search-results nil nil nil title emender-page :whitelist)))
+
+(defn process-blacklist
+    "Function that prepares data for the blacklist front page."
+    [request title emender-page]
+    ; perform the operation selected by user on the web UI (delete, undelete etc.)
+    (perform-operation request :whitelist)
+    (let [params         (:params request)
+          word           (get params "word")
+          search-results (if (not (empty? word))
+                             (db-interface/read-words-for-pattern word :blacklist))]
+        (finish-processing request search-results nil nil nil title emender-page :blacklist)))

 (defn process-all-words
     "Read all words from the selected dictionary and display them to user on generated page."


fix reflection warning.

fix reflection warning.

--- src/metabase/util.clj
+++ src/metabase/util.clj
@@ -85,7 +85,7 @@
 ;;; ## Date Stuff

 (defn is-temporal? [v]
-  (and v (contains? #{:java.sql.Timestamp :java.sql.Date :java.util.Date :org.joda.time.DateTime} (keyword (.getName (type v))))))
+  (and v (contains? #{:java.sql.Timestamp :java.sql.Date :java.util.Date :org.joda.time.DateTime} (keyword (.getName ^Class (type v))))))

 (defn new-sql-timestamp
   "`java.sql.Date` doesn't have an empty constructor so this is a convenience that lets you make one with the current date.


Skeleton HTTP serving.

Skeleton HTTP serving.

--- src/org/scode/sob.clj
+++ src/org/scode/sob.clj
@@ -2,16 +2,25 @@
   (:gen-class)
   (:require [org.scode.sob.markdown :as markdown]
             [clojure.contrib.command-line :as cmdline]
-            [clojure.contrib.logging :as logging]))
+            [clojure.contrib.logging :as logging]
+            [ring.adapter.jetty]))

 (defn die [msg]
   (logging/fatal msg)
   (System/exit 1))

+(defn make-blog-app
+  [port base path]
+  (fn [req]
+    {:status 200
+     :headers {"Content-Type" "text/html"}
+     :body "not implemented"}))
+
 (defn serve-blog
   "Start serving a blog at http://*:port/base."
   [port base path]
-  (logging/info (str "not impl serve " port " " base " " path)))
+  (logging/info (str "starting sob on *:" port base ", serving " path))
+  (ring.adapter.jetty/run-jetty (make-blog-app port base path) {:port port}))

 (defn -main [& args]
   (cmdline/with-command-line args


Add Thorin's Side

Add Thorin's Side

--- src/espdig/system.clj
+++ src/espdig/system.clj
@@ -26,6 +26,9 @@
     :feed/title-rgx [".*"]}
    {:feed/channel   "Insight on Esports"
     :feed/rss      "https://www.youtube.com/feeds/videos.xml?channel_id=UC4AGeYoOM9lRH6-L7wNFgTQ"
+    :feed/title-rgx [".*"]}
+   {:feed/channel   "Thorin's Side"
+    :feed/rss      "https://www.youtube.com/feeds/videos.xml?channel_id=UC4rma8fFU0UmxiiVzH8RHDA"
     :feed/title-rgx [".*"]}])

 (defn new-system