re-org: use one base template

re-org: use one base template

--- src/aspire/templates.clj
+++ src/aspire/templates.clj
@@ -1,12 +1,13 @@
 (ns aspire.templates
   (:require [net.cgrand.enlive-html :as en]
-            [hiccup.core :as hc]
             [aspire.util :as a-util]))

 ;; Selectors
 ;; -----------------------
 (def selectors {:common {:header [:nav#top-bar]
-                         :side-nav [:nav#side-nav]}
+                         :title [:head :title]
+                         :menu [:nav#side-nav]
+                         :main [:main#content]}
                 :onboarding {:intro [:main#content :div.intro]
                              :steps [:main#content :ol.onboarding-steps]
                              :step [:main#content :ol.onboarding-steps :li.step-1]}})
@@ -51,13 +52,34 @@
   [:h2] (en/content title)
   [:p] (en/content desc))

-(en/defsnippet onboarding-step "public/index.html"
-  (get-in selectors [:onboarding :step])
+(en/defsnippet onboarding-step "public/index.html" (get-in selectors [:onboarding :step])
   [n desc]
   [:strong] (en/content (str "Step " n))
   [:span] (en/content desc))

-#_(en/defsnippet menu "public/index.html" {})
+(en/defsnippet onboarding-main "public/index.html" (get-in selectors [:common :main])
+  [greeting greeting-msg steps]
+  (get-in selectors [:onboarding :intro]) (en/substitute (onboarding-intro greeting greeting-msg))
+  (get-in selectors [:onboarding :steps]) (en/content (map-indexed (fn dostep* [n desc] (onboarding-step (inc n) desc)) steps)))
+
+(en/defsnippet admin-main "public/admin/index.html" (get-in selectors [:common :main])
+  [greeting greeting-msg steps-str]
+  [:h1] (en/content "Aspire Administration")
+  [:div.config-onboarding :h2] (en/content "Configure Page: Onboarding")
+  [:form#config-onboarding] (en/set-attr :action "/config/page/onboarding")
+  [:form#config-onboarding :input#greeting] (en/set-attr :value greeting)
+  [:form#config-onboarding :input#greeting-msg] (en/set-attr :value greeting-msg)
+  [:form#config-onboarding :textarea#steps] (en/content steps-str))
+
+(en/defsnippet menu-item "public/index.html" [:nav#side-nav :ul :> en/first-child]
+  [{:keys [name href]}]
+  [:a] (en/do->
+        (en/content name)
+        (en/set-attr :href href)))
+
+(en/defsnippet common-menu "public/index.html" [:nav#side-nav]
+  [menu-items]
+  [:ul] (en/content (map menu-item menu-items)))

 ;; Transformers
 ;; -----------------------
@@ -69,22 +91,37 @@
            [[:form#search (en/attr? :data-active)]] (en/set-attr :data-active tf)
            [[:body (en/attr? :data-search-active)]] (en/set-attr :data-search-active tf))))

-;; Templates
+(en/defsnippet common-head "public/index.html" [:head]
+  [title desc]
+  [:title] (en/content title)
+  [[:meta (en/attr-has :name "description")]] (en/set-attr :content desc))
+
+;; Template
 ;; -----------------------
-(en/deftemplate onboarding (search-toggle "public/index.html" true)
-  [header greeting greeting-msg steps]
+(en/deftemplate base "public/index.html"
+  ;; Do things in this order. main [probably] pulls in head, header,
+  ;; and menu, so those transforms must follow main.
+  [{:keys [head header menu]} main search-toggle]
+  (get-in selectors [:common :main]) (en/substitute main)
   (get-in selectors [:common :header]) (en/substitute header)
-  (get-in selectors [:onboarding :intro]) (en/substitute (onboarding-intro greeting greeting-msg))
-  (get-in selectors [:onboarding :steps]) (en/content (map-indexed (fn dostep [n desc] (onboarding-step (inc n) desc)) steps)))
+  (get-in selectors [:common :menu]) (en/substitute menu)
+  [:head] (en/substitute head)
+  [[:form#search (en/attr? :data-active)]] (en/set-attr :data-active search-toggle)
+  [[:body (en/attr? :data-search-active)]] (en/set-attr :data-search-active search-toggle))

-(en/deftemplate admin (search-toggle "public/admin/index.html" false)
-  [header greeting greeting-msg steps-str]
-  (get-in selectors [:common :header]) (en/substitute header)
-  [:body#admin] (en/set-attr :data-search-active false)
-  [:div.config-onboarding :h2] (en/content "Configure Page: Onboarding")
-  [:main#content :h1] (en/content "Aspire Administration")
-  [:form#config-onboarding] (en/set-attr :action "/config/page/onboarding")
-  [:form#config-onboarding :input#greeting] (en/set-attr :value greeting)
-  [:form#config-onboarding :input#greeting-msg] (en/set-attr :value greeting-msg)
-  [:form#config-onboarding :textarea#steps] (en/content steps-str))
+;; Templaters
+;; -----------------------
+(defn common-snippets [ctx]
+  {:head (common-head "TODO: Get the title out of the request." "TODO: Also get a description out of the request.")
+   :header (common-header (rand-int 100) "http://google.com" "Bo Jackson")
+   :menu (common-menu [{:name "Admin" :href "/admin"}
+                       {:name "Home" :href "/"}
+                       {:name "Add to your playlist" :href "/welcome"}])})

+(defn onboarding [common-snippets & args]
+  (let [main (apply onboarding-main args)]
+    (render (base common-snippets main true))))
+
+(defn admin [common-snippets & args]
+  (let [main (apply admin-main args)]
+    (render (base common-snippets main false))))


Fixed cases sorting

Fixed cases sorting

--- src/clj/asols/solver.clj
+++ src/clj/asols/solver.clj
@@ -20,30 +20,24 @@
      [ret# elapsed#]))

 (defprotocol SolverProtocol
-  (get-metrics [this net entries])
-  (sort-cases [this cases]))
+  (get-metrics [this net entries]))

 (defrecord ClassificationSolver [train-opts mutation-opts]
   SolverProtocol
   (get-metrics [_ net entries]
-    (trainer/calc-ca net entries))
-  (sort-cases [_ cases]
-    (sort-by
-      (fn [case]
-        [(- 1.0 (:train-metrics case))
-         (:train-cost case)])
-      cases)))
+    (trainer/calc-ca net entries)))

 (defrecord RegressionSolver [train-opts mutation-opts]
   SolverProtocol
-  (get-metrics [_ _ _] nil)
-  (sort-cases [_ cases]
-    (sort-by :train-cost cases)))
+  (get-metrics [_ _ _] nil))

 (defn- converged?
   [_ solving]
   (< (:train-cost (:best-case solving))
      1E-4))
+
+(defn- sort-cases [cases]
+  (sort-by :train-cost cases))

 (defn create-solver
   [t-opts m-opts]
@@ -110,7 +104,7 @@
   [solver net cases]
   (let [select-count 5
         selected-cases (->> cases
-                            (sort-cases solver)
+                            (sort-cases)
                             (take-while #(not= ::m/identity (:operation (:mutation %))))
                             (take select-count))]
     (for [select-count (range 2 (inc (count selected-cases)))
@@ -143,7 +137,7 @@
           progress-chan (make-progress-chan out-chan (count mutations))
           [cases ms-took] (solve-mutations solver net mutations tpool progress-chan)
           all-cases (concat cases (make-combined-cases solver net cases))
-          [best-case & other-cases] (sort-cases solver all-cases)]
+          [best-case & other-cases] (sort-cases all-cases)]
       (make-solving solver net best-case other-cases ms-took))
     (catch InterruptedException _
       (debug "Detected thread interrupt"))))


Keep track of clients.

Keep track of clients.

We want to keep track of the clients, so that we can broadcast messages.

--- src/clj/chatapp/core.clj
+++ src/clj/chatapp/core.clj
@@ -7,11 +7,20 @@
    [org.httpkit.server :as server])
   (:gen-class))

+(def clients (atom #{}))
+
+(defn- message-received [msg]
+  (doseq [client @clients]
+    (server/send! client (apply str (reverse msg)))))
+
 (defn handler [request]
   (server/with-channel request channel
-    (server/on-close channel   (fn [status] (println "channel closed: " status)))
+    (swap! clients conj channel)
+    (server/on-close channel   (fn [status] (swap! clients disj channel)))
     (server/on-receive channel (fn [data] ;; echo it back
-                                 (server/send! channel (apply str (reverse data)))))))
+                                 (future
+                                   (Thread/sleep 5000)
+                                   (message-received data))))))

 (defroutes routes
   (GET "/ws" [] handler)


Added new :closure-extra-annotations compiler option allowing to define extra JSDoc annotation used by closure libraries.

--- src/clj/cljs/closure.clj
+++ src/clj/cljs/closure.clj
@@ -173,6 +173,8 @@
     (doseq [[type level] (:closure-warnings opts)]
       (. compiler-options
         (setWarningLevel (type warning-types) (level check-level))))
+    (if-let [extra-annotations (:closure-extra-annotations opts)]
+      (. compiler-options (setExtraAnnotationNames (map name extra-annotations))))
     (when (contains? opts :source-map)
       (set! (.sourceMapOutputPath compiler-options)
             (:source-map opts))


provide :asset-path option so that :main users can configure how the :none optimization script tags get written out

--- src/clj/cljs/closure.clj
+++ src/clj/cljs/closure.clj
@@ -771,10 +771,11 @@
   (output-one-file opts (deps-file opts sources)))

 (defn output-main-file [opts]
-  (let [output-dir (util/output-directory opts)]
+  (let [asset-path (or (:asset-path opts)
+                       (util/output-directory opts))]
     (output-one-file opts
-      (str "document.write('<script src=\"" output-dir "/goog/base.js\"></script>');"
-           "document.write('<script src=\"" output-dir "/cljs_deps.js\"></script>');"
+      (str "document.write('<script src=\"" asset-path "/goog/base.js\"></script>');"
+           "document.write('<script src=\"" asset-path "/cljs_deps.js\"></script>');"
            "document.write('<script>goog.require(\"" (comp/munge (:main opts)) "\");</script>');"))))

 (defn ^String rel-output-path


Use alphanumeric labels.

Use alphanumeric labels.

--- src/clj/minijava/gas.clj
+++ src/clj/minijava/gas.clj
@@ -30,7 +30,7 @@
 (deftype LABEL [lbl]
   clojure.lang.IPersistentMap
   Object
-  (toString [] (str lbl ":")))
+  (toString [] (str "lbl_" lbl ":")))

 ;;movl %eax, %ebx copies the contents of %eax to %ebx
 (deftype movl [src dst]
@@ -64,7 +64,7 @@
 (deftype call [dst]
   clojure.lang.IPersistentMap
   Object
-  (toString [] (str "call " dst)))
+  (toString [] (str "call lbl_" dst)))

 ;;An unconditional jump. This simply sets %eip to the destination
 ;;address.


Change mdToHtml -> md->html

Change mdToHtml -> md->html

--- src/cljs/gampg/core.cljs
+++ src/cljs/gampg/core.cljs
@@ -65,7 +65,6 @@
                                                                                (when-let [exit (get-in lessons [(:index old-lesson) :exit])]
                                                                                (exit app  (get-in app [:live :gl])))
                                                                                (let [new-lesson (get-in lessons [idx])]
-                                                                                (js/console.log idx " -> " (pr-str (:live app)))
                                                                                ((:enter new-lesson) app (get-in app [:live :node]))
                                                                                (merge new-lesson
                                                                                {:index idx}))))
@@ -77,7 +76,7 @@
                                       (let [debug-data  (reduce merge {} (map (juxt identity #(get-in app %)) (:debug-keys summary)))]
                                         (when (seq debug-data)
                                           (dom/code nil (with-out-str (fipp/pprint debug-data)))))
-                                      (dom/div #js{:dangerouslySetInnerHTML #js{:__html (md/mdToHtml (:explanation summary "No explanation for this lesson"))}}))))))))
+                                      (dom/div #js{:dangerouslySetInnerHTML #js{:__html (md/md->html (:explanation summary "No explanation for this lesson"))}}))))))))
    app-state
    {:target (. js/document (getElementById "app"))}))


Fixed documentation of meta-error categories.

--- src/clojush/evaluate.clj
+++ src/clojush/evaluate.clj
@@ -31,7 +31,9 @@
      :compressibility (minimize ammount a program compresses compared to itself)
      :total-error (minimize total error)
      :unsolved-cases (maximize number of cases with zero error)
-     :random (a random floating-point value)"
+     :rand (a random floating-point value)
+     :rand-bit (randomly 0 or 1)
+     :age (minimize genealogical age of program)"
   [ind {:keys [meta-error-categories error-threshold] :as argmap}]
   (let [meta-error-fn (fn [cat]
                         (cond
@@ -39,7 +41,8 @@
                           (= cat :size) (count (:genome ind))
 ;                          (= cat :compressibility) 555 ;;TMH fix later
                           (= cat :total-error) (:total-error ind)
-                          (= cat :unsolved-cases) (count (filter #(> % error-threshold) (:errors ind)))
+                          (= cat :unsolved-cases) (count (filter #(> % error-threshold)
+                                                                 (:errors ind)))
                           (= cat :rand) (lrand)
                           (= cat :rand-bit) (lrand-nth [0 1])
                           (= cat :age) (:age ind)
@@ -129,3 +132,4 @@

+


Fixed TPN notation for incidence-set

Fixed TPN notation for incidence-set

Closes #19

Signed-off-by: Tom Marble <b248307e886b80bf9cb4014595572a835b049bf4@info9.net>

--- src/main/clj/pamela/tpn.clj
+++ src/main/clj/pamela/tpn.clj
@@ -274,22 +274,6 @@
       :tpn-type :p-end)))

 ;; ---------------------------
-
-;; remove invalid slots
-(defn remove-invalid-tpn-attributes []
-  (doseq [uid (keys @*tpn-plan-map*)]
-    (let [object (get-tpn-plan-map uid)
-          {:keys [tpn-type end-node constraints]} object]
-      (cond
-        (and (#{:state :c-end :p-end} tpn-type) end-node)
-        ;; (and (#{:c-end :p-end} tpn-type) end-node)
-        ;; (and (#{:state} tpn-type) end-node)
-        (update-tpn-plan-map! (dissoc object :end-node :htn-node))
-        (#{:c-end :p-end} tpn-type)
-        (update-tpn-plan-map! (dissoc object :htn-node))
-        (and (= :null-activity tpn-type) constraints)
-        (update-tpn-plan-map! (dissoc object :constraints))
-        ))))

 (defn get-tpn-end-node-ids [activity-ids]
   (mapv #(:end-node (get-tpn-plan-map %)) activity-ids))
@@ -562,9 +546,35 @@
               (if tc-uids (conj tc-uids uid) [uid]))))))
     (remove-superfluous tpn-notes begin-node)))

+;; remove invalid slots
+(defn remove-invalid-tpn-attributes []
+  (doseq [uid (keys @*tpn-plan-map*)]
+    (let [object (get-tpn-plan-map uid)
+          {:keys [tpn-type end-node constraints]} object]
+      (cond
+        (and (#{:state :c-end :p-end} tpn-type) end-node)
+        ;; (and (#{:c-end :p-end} tpn-type) end-node)
+        ;; (and (#{:state} tpn-type) end-node)
+        (update-tpn-plan-map! (dissoc object :end-node :htn-node))
+        (#{:c-end :p-end} tpn-type)
+        (update-tpn-plan-map! (dissoc object :htn-node))
+        (and (= :null-activity tpn-type) constraints)
+        (update-tpn-plan-map! (dissoc object :constraints))))))
+
+(defn update-incidence-set []
+  (doseq [uid (keys @*tpn-plan-map*)]
+    (let [object (get-tpn-plan-map uid)
+          {:keys [tpn-type end-node]} object
+          node (if (and (pamela.tpn/tpn-isa? tpn-type :null-activity) end-node)
+                 (get-tpn-plan-map end-node))]
+      (when node
+        (update-tpn-plan-map!
+          (update-in node [:incidence-set] conj uid))))))
+
 (defn optimize-tpn-map []
   (remove-superfluous-null-activities)
-  (remove-invalid-tpn-attributes))
+  (remove-invalid-tpn-attributes)
+  (update-incidence-set))

 (defn get-tc-from-body [body end-node]
   (let [{:keys [temporal-constraints


Handle state in the close temporal hook.

--- src/onyx_benchmark/peer.clj
+++ src/onyx_benchmark/peer.clj
@@ -17,8 +17,7 @@

   (def n-peers (Integer/parseInt n-peers))

-  (defn my-inc [state {:keys [n] :as segment}]
-    (swap! state inc)
+  (defn my-inc [{:keys [n] :as segment}]
     (assoc segment :n (inc n)))

   (def ports (atom 49999))
@@ -41,8 +40,12 @@
             (recur))
           (catch Exception e
             (.printStackTrace e))))
-      {:bench/state state
-       :onyx.core/params [state]}))
+      {:bench/state state}))
+
+  (defmethod l-ext/close-temporal-resources :inc
+    [_ event]
+    (swap! (:bench/state event) + (count (:onyx.core/decompressed event)))
+    {})

   (onyx.api/start-peers! (Integer/parseInt n-peers) peer-config)


Improve unified synthdef output:

Improve unified synthdef output:

* add number of outputs
* add ugen arg names
* re-order params

--- src/overtone/repl/debug.clj
+++ src/overtone/repl/debug.clj
@@ -13,13 +13,13 @@

 (defn- unify-ugen
   [ugen ugens sdef]
-  (sorted-map
-   :name (:name ugen)
+  {:name (:name ugen)
    :rate (REVERSE-RATES (:rate ugen))
    :special (:special ugen)
    :inputs (map #(unify-input % ugens (:constants sdef)) (:inputs ugen))
+   :n-outputs (count (:outputs ugen))
    :outputs (:outputs ugen)
-   :id (:id ugen)))
+   :id (:id ugen)})

 (defn- fix-input-refs
   [inputs ugens]
@@ -31,12 +31,22 @@
        inputs))

 (defn- unify-ugens
-  [ugens sdef]
-  (let [ugens (map (fn [ug idx] (assoc ug :id idx)) ugens (range))
+  [orig-ugens sdef]
+  (let [ugens (map (fn [ug idx] (assoc ug :id idx)) orig-ugens (range))
         ugens (map #(unify-ugen % ugens sdef) ugens)
-        ugens (sort #(compare (:name %1) (:name %2)) ugens)
-        ]
-    (map (fn [ug idx] (assoc ug :id idx :inputs (fix-input-refs (:inputs ug) ugens))) ugens (range))))
+        ugens (map (fn [ug o-ug idx]
+                     (assoc ug
+                       :id idx
+                       :inputs (into {}
+                                     (map (fn [clean-input input]
+                                            [(keyword (:name input))
+                                             clean-input])
+                                          (fix-input-refs (:inputs ug) ugens)
+                                          (-> o-ug :spec :args)))))
+                   ugens
+                   orig-ugens
+                   (range))]
+    (sort #(compare (:name %1) (:name %2)) ugens)))

 (defn unify-synthdef
   "Munge synthdef into a readable 'unified' format - ensures that two
@@ -44,11 +54,11 @@
   order. Useful for comparing two ugen synthdefs (i.e. an Overtone and
   SCLang synthdef) side-by-side."
   [sdef]
-  {:ugens   (unify-ugens (:ugens sdef) sdef)
-   :name    (:name sdef)
+  {:name    (:name sdef)
    :params  (:params sdef)
    :pnames  (:pnames sdef)
-   :n-ugens (count (:ugens sdef))})
+   :n-ugens (count (:ugens sdef))
+   :ugens   (unify-ugens (:ugens sdef) sdef)})

 (defn pp-unified-sc-synth
   "Pretty print a unified version of an sc synth based on the name of


Comment obsolete test

Comment obsolete test

--- metering/test/sixsq/slipstream/metering/metering_test.clj
+++ metering/test/sixsq/slipstream/metering/metering_test.clj
@@ -158,7 +158,7 @@
   (is (= {:resourceURI t/metering-resource-uri} (t/replace-resource-uri {:resourceURI "BAD!"}))))

-(deftest check-create-actions
+#_(deftest check-create-actions
   (doseq [search-result-doc [{:body {:hits {:hits [{:_source {:a 1}}
                                                    {:_source {:b 2}}]}}}
                              (-> (io/resource "virtual-machines.json")


testy

testy

--- src/reframe_forms/core.cljs
+++ src/reframe_forms/core.cljs
@@ -8,6 +8,7 @@
   (:require-macros
     [devcards.core :as dc :refer [defcard deftest defcard-rg]]
     [reagent.ratom :refer [reaction]]
+    [cljs.test :refer [testing is]]
     ))

 (enable-console-print!)
@@ -150,9 +151,13 @@
   ([value validator f & args]
    (let [new-value (apply f value args)]
      (-> new-value
-         (assoc ::validator-errors (validator (::value new-value)))))))
+         (assoc ::validator-errors (validate validator (::value new-value)))))))

 (extend-type nil
+  Validator
+  (validate [this value]
+    nil)
+
   Validatable
   (valid? [this]
     true)
@@ -174,8 +179,8 @@

   Value
   (value [this]
-    (value this nil))
-  (value [_ default]
+    (reaction (get @value ::value)))
+  (value [this default]
     (reaction (get @value ::value default)))
   (set-value! [this val]
     (swap! value
@@ -212,6 +217,8 @@
   (->Field form (coercer type) (reify Validator
                                  (validate [_ value] [])) path))

+
+
 (deftype ValidationResult [errors]
   PathErrors
   (path-errors [this path]
@@ -221,13 +228,22 @@
   (valid? [this]
     (empty? errors)))

-(defn create-form [value validator]
-  (->Form (reagent/atom {::value    value
-                         ::original value
-                         })
-          #(->ValidationResult (-> %
-                                 (st/validate validator)
-                                 first))))
+(deftype StructValidator [schema]
+  Validator
+  (validate [this value]
+    (->ValidationResult (-> (st/validate value schema)
+                            first))))
+(defn struct-validator [schema]
+  (->StructValidator schema))
+
+(defn create-form
+  ([value]
+   (create-form value nil))
+  ([value validator]
+   (->Form (reagent/atom {::value    value
+                          ::original value
+                          })
+           validator)))

 (defn handle-str-value [field]
   #(set-str-value! field (-> % .-target .-value)))
@@ -250,18 +266,63 @@
      (for [[i message] (map-indexed vector @(errors field))]
        ^{:key i} [:li message])]))

+(deftest test-form
+  (testing "form without validator"
+    (testing "display"
+      (let [form       (create-form {:field     "value"
+                                     :int-field 1})
+            text-field (field form :text [:field])
+            int-field  (field form :int [:int-field])]
+        (is (= @(value form nil) {:field     "value"
+                                  :int-field 1}))
+        (is (= @(value text-field) "value"))
+        (is (= @(str-value text-field) "value"))
+        (is @(valid? text-field))
+
+        (is (= @(value int-field) 1))
+        (is (= @(str-value int-field) "1"))
+        (is @(valid? int-field))))
+
+
+    (testing "change"
+      (let [form  (create-form {:field "value"
+                                :int-field 1})
+            text-field (field form :text [:field])
+            int-field (field form :int [:int-field])
+            ]
+        (set-str-value! text-field "changed")
+        (is (= @(value text-field) "changed"))
+        (is @(valid? text-field))
+
+        (set-str-value! int-field "invalid")
+        (is (= @(value int-field) nil))
+        (is (= @(str-value int-field ) "invalid"))
+        (is (not @(valid? int-field)))
+        )))
+
+  (testing "form with validator, int in range <1;2>"
+    (let [form (create-form {:value 1} (struct-validator {:value [[st/in-range 1 2]]}))
+          int-field (field form :int [:value])]
+      (is @(valid? int-field) "1 is in range <1;2")
+
+
+      (set-str-value! int-field "2")
+      (is @(valid? int-field) "2 is in range <1;2>")
+
+
+      (set-str-value! int-field "3")
+      (is (not @(valid? int-field)) "3 is not in range <1;2>"))))
+
 (defcard-rg rg-form
             (fn [state]
               (let [form      (create-form
                                 @state
-                                {:field     [st/required st/string]
-                                 :int-field [st/required st/integer]})
+                                (struct-validator {:field     [st/required st/string]
+                                                   :int-field [st/required st/integer]}))
                     int-field (field form :int [:int-field])]
                 (fn [state]
-                  [:form {:on-submit #(do
-                                       (prn "submit" @(value form {}) @state)
-                                       (reset! state @(value form {}))
-                                       (.preventDefault %))}
+                  [:form {:on-submit #(do (reset! state @(value form {}))
+                                          (.preventDefault %))}
                    [:div "Valid?:" (if @(valid? form) "T" "F")]
                    [my-field "text" (field form :text [:field])]
                    [my-field "text" (field form :int [:int-field])]
@@ -271,7 +332,6 @@
                     [:option {:value 1} "1"]
                     [:option {:value 2} "2"]]
                    [:input {:type "submit"}]
-                   (.log js/console @(valid? form) (clj->js @(:value form)))
                    ])))
             {:field     "value"
              :int-field 1}


add login form

add login form

--- src_cljs/rrms/corecljs.cljs
+++ src_cljs/rrms/corecljs.cljs
@@ -121,12 +121,13 @@
          [input-validate :password "Password"  "input-group-addon glyphicon glyphicon-lock" "password" my-data "password" focus]
          [button "Sign-in" "button" my-data focus ]]]])))

-(defn set-page! [currnt-page]
-  (set-key-value :page-location
-                 currnt-page))
-
 (defn is-authenticated? []
   (not (nil? (get-value! :user))))
+
+(defn set-page! [currnt-page]
+  (if (is-authenticated?)(set-key-value :page-location
+                                        currnt-page)
+      (set-key-value :page-location [login])))

 (defn get-total-rec-no [nos]
   (let [totrec (quot nos 10)]
@@ -407,20 +408,21 @@
   (set-page! (get-value! :page-location)))

 (defroute documents-list "/documents" []
-  (let [onres (fn [json]
-                (let [dt (getdata json)]
-                  (set-key-value :documents dt)
-                  (set-key-value :total-pages (get-total-rec-no dt))
-                  (set-key-value :page-location  [render-documents (get-new-page-data (get-value! :documents)
-                                                                                (get-value! :current-page))])))]
-    (http-get "http://localhost:8193/documents/all" onres)))
+  (if (is-authenticated?)(let [onres (fn [json]
+                                       (let [dt (getdata json)]
+                                         (set-key-value :documents dt)
+                                         (set-key-value :total-pages (get-total-rec-no dt))
+                                         (set-key-value :page-location  [render-documents (get-new-page-data (get-value! :documents)
+                                                                                (get-value! :current-page))])))]
+                           (http-get "http://localhost:8193/documents/all" onres))
+      (set-key-value :page-location [login])))

 (defroute documents-path "/documents/add" []
   (set-page! [document-template]))

 (defroute documents-path1 "/documents/update/:id" [id]
-  (set-page! [document-update-template id
+ (set-page! [document-update-template id
               (first (filter (fn[obj]
                                (=(.-id obj) (.parseInt js/window id))) (get-value! :documents)))]))

@@ -431,7 +433,7 @@
 (defn main
   []
   (secretary/set-config! :prefix "#")
-  (set-key-value :page-location [render-documents []])
+  (set-key-value :page-location [login])
   (r/render [page]
             (.getElementById js/document "app1"))
   (let [history (History.)]


update-form-onclick function is added

update-form-onclick function is added

--- src_cljs/rrms/corecljs.cljs
+++ src_cljs/rrms/corecljs.cljs
@@ -240,7 +240,7 @@
                                            (get-value! :current-page))]))))

 ;; ========================================================================================
-;; Add and Update form creation validation
+;; Add-update-form creation validation
 ;; ========================================================================================

 (defn form-validator [data-set]
@@ -275,7 +275,7 @@
 (defn button [value fun]
   [:button.btn.btn-primary {:on-click fun} value])

-(defn form-save [data-set focus]
+(defn add-form-onclick [data-set focus]
   (if (= nil (form-validator @data-set))
     (let [onres (fn[json]
                   (do
@@ -287,11 +287,19 @@
                  onres  (.serialize (Serializer.) (clj->js @data-set))))
     (reset! focus "on")))

+(defn update-form-onclick [data-set focus]
+  (if (= nil (form-validator @data-set))
+    (let [onres (fn[data]
+                  (secretary/dispatch! "/documents"))]
+      (http-post "http://localhost:8193/documents/update"
+                 onres (.serialize (Serializer.) (clj->js @data-set))))
+    (reset! focus "on")))
+
 (defn form-cancel [event]
   (secretary/dispatch! "/documents"))

-(defn document-template-form [doc-name data-set focus]
-  [:div#add.container
+(defn document-template [doc-name data-set focus save-function]
+  [:div.container
    [:div.panel.panel-primary.model-dialog
     [:div.panel-heading
      [:h2 doc-name]]
@@ -303,28 +311,43 @@
        [form-input-element :employeename "Employee name" "text" data-set focus]
        [form-input-element :date "Date" "date" data-set focus]
        [form-input-element :location "Location" "text" data-set focus]
-       [button "Save" #(form-save data-set focus) ]
-       [button "cancel" form-cancel ]]]]]])
-
-(defn document-update-template1 [id dmt]
-  (let [add-data (r/atom {:documentname (.-documentname dmt)
-                          :title (.-title dmt)
-                          :employeename (.-employeename dmt)
-                          :date (f/unparse (f/formatter "yyyy-MM-dd")(f/parse (.-date dmt)))
-                          :location (.-location dmt)})
-        focus (r/atom nil)]
-    (fn [] [document-template-form "Update Document" add-data focus])))
-
-(defn document-template1 []
+       [button "Save" save-function]
+       [button "cancel" form-cancel]]]]]])
+
+(defn document-add-template []
   (let [add-data (r/atom {})
         focus (r/atom nil)]
-    (fn [] [document-template-form "New Document" add-data focus])))
+    (fn [] [document-template "New Document" add-data focus #(add-form-onclick add-data focus)])))
+
+(defn document-update-template [id dmt]
+  (let [update-data (r/atom {:id id
+                             :documentname (.-documentname dmt)
+                             :title (.-title dmt)
+                             :employeename (.-employeename dmt)
+                             :date (f/unparse (f/formatter "yyyy-MM-dd")(f/parse (.-date dmt)))
+                             :location (.-location dmt)})
+        focus (r/atom nil)]
+    (fn [] [document-template "Update Document" update-data focus  #(update-form-onclick update-data focus)])))

 ;; ===============================================================================================
-;; end of add-update form coding
+;; end of add-update-form coding
 ;; ===============================================================================================

+(defn click-update[id]
+  (secretary/dispatch! (str "#/documents/update/" id)))
+
+(defn delete[id]
+  (let [onres (fn [json]
+                (do
+                  (set-key-value :documents (getdata json))
+                  (set-key-value :page-location
+                                 [render-documents (get-new-page-data (get-value! :documents)
+                                                                      (get-value! :current-page))])))]
+    (http-delete (str "http://localhost:8193/documents/delete/" id)  onres)))
+
+(defn add [event]
+  (secretary/dispatch! "/documents/add"))

 (defn get-all-click [event]
   (let [onres (fn [json]
@@ -336,27 +359,6 @@
                                  [render-documents (get-new-page-data (get-value! :documents)
                                                                       (get-value! :current-page))])))]
     (http-get "http://localhost:8193/documents/all" onres)))
-
-(defn click-update[id]
-  (secretary/dispatch! (str "#/documents/update/" id)))
-
-;; (defn docupdate [event]
-;;   (let [onres (fn[data]
-;;                 (secretary/dispatch! "/documents"))]
-;;     (http-post "http://localhost:8193/documents/update"
-;;                onres (.serialize (Serializer.) (clj->js (get-update-documents-formdata))))))
-
-(defn delete[id]
-  (let [onres (fn [json]
-                (do
-                  (set-key-value :documents (getdata json))
-                  (set-key-value :page-location
-                                 [render-documents (get-new-page-data (get-value! :documents)
-                                                                      (get-value! :current-page))])))]
-    (http-delete (str "http://localhost:8193/documents/delete/" id)  onres)))
-
-(defn add [event]
-  (secretary/dispatch! "/documents/add"))

 (defn render-documents [documents]
   [:div
@@ -442,10 +444,10 @@

 (defroute documents-path "/documents/add" []
-  (set-page! [document-template1]))
+  (set-page! [document-add-template]))

 (defroute documents-path1 "/documents/update/:id" [id]
-  (set-page! [document-update-template1 id
+  (set-page! [document-update-template id
               (first (filter (fn[obj]
                                (=(.-id obj) (.parseInt js/window id))) (get-value! :documents)))]))


Fix bug in PersistentHashSet.-seq

Fix bug in PersistentHashSet.-seq

--- lib/shin/cljs/cljs/core.cljs
+++ lib/shin/cljs/cljs/core.cljs
@@ -2107,7 +2107,7 @@
           (loop [i 0
                  res nil]
             (if (< i len)
-              (let [key (aget keys i)]
+              (let [k (aget keys i)]
                 (recur (inc i) (cons k res)))
               res))))))


Hot-fix for postgres filter

Hot-fix for postgres filter

--- backend/src/akvo/lumen/postgres/filter.clj
+++ backend/src/akvo/lumen/postgres/filter.clj
@@ -55,7 +55,7 @@
 (defmethod filter-sql "isLower"
   [{:keys [column operation value]}]
   (let [op (if (= operation "keep") "<" ">=")]
-    (comparison op (:type column) (:columnName column) (:value column))))
+    (comparison op (:type column) (:columnName column) value)))

 (defmethod filter-sql "is"
   [{:keys [column operation value]}]


fix target-grammar-rules

fix target-grammar-rules

--- test/babel/test/reader.cljc
+++ test/babel/test/reader.cljc
@@ -10,7 +10,7 @@

 (deftest chiamarsi
   (let [target-grammar-rules
-        #{"s-present-phrasal"
+        #{"sentence-phrasal-head"
           "vp-32"
           "vp-pronoun-phrasal"}
         source-grammar-rules


Fix indentation

Fix indentation

--- test/cljam/io/util_test.clj
+++ test/cljam/io/util_test.clj
@@ -62,8 +62,7 @@
     "foo.bigWig" :bigwig
     "foo.BIGWIG" :bigwig
     "foo.bw" :bigwig
-    "foo.BW" :bigwig
-    )
+    "foo.BW" :bigwig)
   (are [?dir]
       (are [?path] (thrown? Exception (io-util/file-type (str ?dir ?path)))
         "foo.bam.gz"


RDC - More cell tests.

RDC - More cell tests.

--- test/icfp2015/cell_test.clj
+++ test/icfp2015/cell_test.clj
@@ -41,7 +41,7 @@
       (is (= expected-cell actual-cell)))))

 (deftest rotate-cell-test
-  (testing "cell rotates clockwise around origin"
+  (testing "cell rotates clockwise around itself"
     (let [pivot [1 1]
           cell [1 1]
           rotate-fn (rotate-cell pivot :clockwise)
@@ -49,10 +49,26 @@
           expected-cell [1 1]]
       (is (= expected-cell actual-cell))))

-  (testing "cell rotates counterclockwise around origin"
+  (testing "adjacent cell rotates clockwise"
+    (let [pivot [4 2]
+          cell [5 2]
+          rotate-fn (rotate-cell pivot :clockwise)
+          actual-cell (rotate-fn cell)
+          expected-cell [5 1]]
+      (is (= expected-cell actual-cell))))
+
+  (testing "cell rotates counterclockwise around itself"
     (let [pivot [1 1]
           cell [1 1]
           rotate-fn (rotate-cell pivot :counterclockwise)
           actual-cell (rotate-fn cell)
           expected-cell [1 1]]
+      (is (= expected-cell actual-cell))))
+
+  (testing "adjacent cell rotates clockwise"
+    (let [pivot [4 2]
+          cell [5 2]
+          rotate-fn (rotate-cell pivot :counterclockwise)
+          actual-cell (rotate-fn cell)
+          expected-cell [4 3]]
       (is (= expected-cell actual-cell)))))


Bump up chan sizes for now

Bump up chan sizes for now

--- test/onyx/peer/dag_test.clj
+++ test/onyx/peer/dag_test.clj
@@ -29,11 +29,11 @@

 (def c-chan (chan (inc n-messages)))

-(def j-chan (chan (sliding-buffer (inc n-messages))))
-
-(def k-chan (chan (sliding-buffer (inc n-messages))))
-
-(def l-chan (chan (sliding-buffer (inc n-messages))))
+(def j-chan (chan 500000 #_(sliding-buffer (* 2 (inc n-messages)))))
+
+(def k-chan (chan 500000 #_(sliding-buffer (* 2 (inc n-messages)))))
+
+(def l-chan (chan 500000 #_(sliding-buffer (* 3 (inc n-messages)))))

 (defmethod l-ext/inject-lifecycle-resources :A
   [_ _] {:core.async/chan a-chan})


Three tests: test-inject-confuguration-1[2,3]

--- test/zg/middleware_test.clj
+++ test/zg/middleware_test.clj
@@ -31,3 +31,36 @@
     "Check that the zg.middleware/inject-configuration definition exists."
     (testing "if the zg.middleware/inject-configuration definition exists."
         (is (callable? 'zg.middleware/inject-configuration))))
+
+;
+; Tests for function behaviours.
+;
+
+(deftest test-inject-confuguration-1
+    "Check the behaviour of function zg.middleware/inject-configuration."
+    (testing "The function zg.middleware/inject-configuration."
+        (let [function (inject-configuration (fn [x] x) :cfg)]
+            (are [x y] (= x y)
+                {:configuration :cfg} (function nil)
+                {:configuration :cfg} (function {})
+                {:configuration :cfg :foo :bar} (function {:foo :bar})))))
+
+(deftest test-inject-confuguration-2
+    "Check the behaviour of function zg.middleware/inject-configuration."
+    (testing "The function zg.middleware/inject-configuration."
+        (let [function (inject-configuration (fn [x] nil) :cfg)]
+            (are [x y] (= x y)
+                nil (function nil)
+                nil (function {})
+                nil (function {:foo :bar})
+                nil (function {:foo :bar :baz :bar})))))
+
+(deftest test-inject-confuguration-not-NPE
+    "Check the behaviour of function zg.middleware/inject-configuration."
+    (testing "The function zg.middleware/inject-configuration."
+        (let [function (inject-configuration (fn [x] x) nil)]
+            (are [x y] (= x y)
+                {:configuration nil} (function nil)
+                {:configuration nil} (function {})
+                {:configuration nil :foo :bar} (function {:foo :bar})))))
+


Inject ./refresh-all in profiles.clj

Inject ./refresh-all in profiles.clj

--- .lein/profiles.clj
+++ .lein/profiles.clj
@@ -88,7 +88,7 @@
                         (when (resolve 'vinyasa.inject/in)
                           (eval
                             `(~(symbol "vinyasa.inject/in")
-                              ~'[clojure.tools.namespace.repl refresh])))]}
+                              ~'[clojure.tools.namespace.repl refresh refresh-all])))]}

  ;; END profiles with optional injections


Remove incise plugin from lein plugins.

Remove incise plugin from lein plugins.

--- .lein/profiles.clj
+++ .lein/profiles.clj
@@ -10,7 +10,6 @@
                   [lein-exec "0.3.0"]
                   [com.aphyr/prism "0.1.1"]
                   [org.bodil/lein-noderepl "0.1.10"]
-                  [lein-incise "0.2.1"]
                   [quickie "0.2.1"]
                   [lein-kibit "0.0.8"]
                   [lein-clojars "0.9.1"]


[clojure] Bump plugins

[clojure] Bump plugins

--- .lein/profiles.clj
+++ .lein/profiles.clj
@@ -2,7 +2,7 @@
                   [lein-fore-prob                    "0.1.2"]
                   [lein-ancient                      "0.6.10"]
                   [lein-pprint                       "1.1.2"]
-                  [lein-figwheel                     "0.5.4-7"]
+                  [lein-figwheel                     "0.5.9"]
                   [cider/cider-nrepl                 "0.14.0"]
-                  [venantius/ultra                   "0.5.0"]]
+                  [venantius/ultra                   "0.5.1"]]
         :signing {:gpg-key "E5B26621"}}}


copy last change from lexicon-verbcoach

copy last change from lexicon-verbcoach

--- src/babel/english/lexicon.cljc
+++ src/babel/english/lexicon.cljc
@@ -268,7 +268,8 @@
                                   :3sing "is born"
                                   :1plur "are born"
                                   :2plur "are born"
-                                  :3plur "are born"}}}
+                                  :3plur "are born"}
+                        :past-participle "been born"}}

    "be missed" {:synsem {:cat :verb
                          :sem {:pred :mancare}


+"in front of"

+"in front of"

--- src/babel/english/lexicon.cljc
+++ src/babel/english/lexicon.cljc
@@ -1090,6 +1090,9 @@
    "improve" {:synsem {:cat :verb
                 :sem {:pred :improve}}}

+   "in front of" {:synsem {:cat :prep
+                           :sem {:pred :in-front-of}}}
+
    "increase" {:synsem {:cat :verb
                         :sem {:pred :increase}}}


Add a helper message with log in info after seeding

--- src/braid/core/server/seed.clj
+++ src/braid/core/server/seed.clj
@@ -24,21 +24,26 @@
             (group/create-group-txn {:id (db/uuid) :slug "braid" :name "Braid"})
             (group/create-group-txn {:id (db/uuid) :slug "chat" :name "Chat"})))

+        user-1 {:id (db/uuid)
+                :email "foo@example.com"
+                :password "foofoofoo"}
+
+        user-2 {:id (db/uuid)
+                :email "bar@example.com"
+                :password "barbarbar"}
+
         _ (println "Create Users")
-        [user-1 user-2]
-        (db/run-txns!
-          (concat
+        _ (db/run-txns!
+           (concat
             (user/create-user-txn
-              {:id (db/uuid)
-               :email "foo@example.com"})
+             (select-keys user-1 [:id :email]))
             (user/create-user-txn
-              {:id (db/uuid)
-               :email "bar@example.com"})))
+             (select-keys user-2 [:id :email]))))

         _ (println "Set Passwords")
         _ (db/run-txns! (concat
-                          (user/set-user-password-txn (user-1 :id) "foofoofoo")
-                          (user/set-user-password-txn (user-2 :id) "barbarbar")))
+                         (user/set-user-password-txn (user-1 :id) (user-1 :password))
+                         (user/set-user-password-txn (user-2 :id) (user-2 :password))))

         _ (println "Add Users to Groups and Make Users Admins")
         _ (db/run-txns!
@@ -107,17 +112,21 @@
         new-thread-id (db/uuid)
         [msg5 msg6]
         (db/run-txns!
-          (concat
-            (message/create-message-txn {:id (db/uuid)
-                                         :user-id (user-1 :id)
-                                         :group-id (group-2 :id)
-                                         :thread-id new-thread-id
-                                         :created-at (java.util.Date.)
-                                         :content "Hello?"
-                                         :mentioned-tag-ids [(tag-3 :id)]})
-            (message/create-message-txn {:id (db/uuid)
-                                         :group-id (group-2 :id)
-                                         :thread-id new-thread-id
-                                         :user-id (user-2 :id)
-                                         :created-at (java.util.Date.)
-                                         :content "Hi!"})))]))
+         (concat
+          (message/create-message-txn {:id (db/uuid)
+                                       :user-id (user-1 :id)
+                                       :group-id (group-2 :id)
+                                       :thread-id new-thread-id
+                                       :created-at (java.util.Date.)
+                                       :content "Hello?"
+                                       :mentioned-tag-ids [(tag-3 :id)]})
+          (message/create-message-txn {:id (db/uuid)
+                                       :group-id (group-2 :id)
+                                       :thread-id new-thread-id
+                                       :user-id (user-2 :id)
+                                       :created-at (java.util.Date.)
+                                       :content "Hi!"})))]
+    (println "\nYou can log in with:\n "
+             (select-keys user-1 [:email :password])
+             "\n"
+             (select-keys user-2 [:email :password]))))


Generify fn for extracting keys from the url

--- src/clj/comic_reader/sites.clj
+++ src/clj/comic_reader/sites.clj
@@ -8,10 +8,12 @@
     {:name (process-name name)
      :url (process-url url)}))

-(defn gen-add-id-from-url [extract-pattern]
-  (fn [{:keys [url] :as comic-map}]
-    (let [[_ id] (re-find extract-pattern url)]
-      (assoc comic-map :id id))))
+(defn gen-add-key-from-url [key extract-pattern & [process]]
+  (let [process (or process identity)]
+    (fn [{:keys [url] :as comic-map}]
+      (let [[_ data] (re-find extract-pattern url)]
+        (assoc comic-map
+               key (process data))))))

 (def list
   [(let [canonical-url "http://mangafox.me"
@@ -25,7 +27,8 @@
                     (str manga-url comic-id "/"))
       :comic-list-data {:url manga-url
                         :selector [:div.manga_list :ul :li :a]
-                        :normalize (comp (gen-add-id-from-url
+                        :normalize (comp (gen-add-key-from-url
+                                          :id
                                           manga-pattern)
                                          link->map)}
       :chapter-list-data-for-comic
@@ -63,7 +66,8 @@
       :comic-list-data {:url (str canonical-url "/alphabetical")
                         :selector [:div.series_alpha :ul :li :a]
                         :normalize (comp
-                                    (gen-add-id-from-url
+                                    (gen-add-key-from-url
+                                     :id
                                      manga-pattern)
                                     link->map)}
       :chapter-list-data-for-comic


Make routes query shallow

Make routes query shallow

--- src/clj/gtfve/data/queries.clj
+++ src/clj/gtfve/data/queries.clj
@@ -27,14 +27,18 @@
      (->> (d/datoms db :aevt :route/id)
           (map :e)
           (map (partial d/entity db))
-          (map d/touch))))
+          (map #(select-keys % [:route/id
+                                :route/short-name
+                                :route/long-name
+                                :route/description
+                                :route/text-color])))))
   ([id]
    (let [db (d/db conn)]
      (->> (d/datoms db :avet :route/id id)
           first
           :e
           (d/entity db)
-          touch-all))))
+          (d/touch)))))

 (defn haversine
   [{lon1 :longitude lat1 :latitude} {lon2 :longitude lat2 :latitude}]


Remove unnecessary use

Remove unnecessary use

--- src/clj_gatling/simulation.clj
+++ src/clj_gatling/simulation.clj
@@ -1,5 +1,4 @@
 (ns clj-gatling.simulation
-  (:use [clojure.set :only [rename-keys]])
   (:require [org.httpkit.client :as http]
             [clj-time.core :as time]
             [clj-time.local :as local-time]


Added a couple of comments

Added a couple of comments

--- src/compojure/http/session.clj
+++ src/compojure/http/session.clj
@@ -17,8 +17,8 @@

 ;; Override these mulitmethods to create your own session storage

-(defmulti create-session  (fn [type] type))
-(defmulti get-session     (fn [type id] type))
+(defmulti create-session  (fn [type] type))    ; returns new session id
+(defmulti get-session     (fn [type id] type)) ; returns session ref
 (defmulti destroy-session (fn [type id] type))

 ;; In memory sessions


Finish fixing unit tests for list packages

--- src/degasolv/resolver_core.clj
+++ src/degasolv/resolver_core.clj
@@ -415,7 +415,7 @@
                                              #(if (empty? %1)
                                                 (do [%2])
                                                 (conj %1 %2))
-                                             present-package))
+                                             found-package))
                                  (and (or
                                        (not (nil? found-id-packages))
                                        (not (nil? present-id-packages)))


Generate html as part of bootstrapping

Generate html as part of bootstrapping

--- src/doctopus/doctopus/head.clj
+++ src/doctopus/doctopus/head.clj
@@ -20,6 +20,7 @@
                                  :let [strang (slurp tf)]]
                              (edn/read-string strang))
           tentacles (map #(map->Tentacle %) tentacle-configs)]
+      (map t/generate-html tentacles)
       (assoc this :tentacles tentacles)))
   (list-tentacles [this] (:tentacles this))
   (load-tentacle-routes [this]


Product name is displayed for chapters list + chapter-id in href

--- src/hurvinek/html_renderer.clj
+++ src/hurvinek/html_renderer.clj
@@ -90,18 +90,18 @@

 (defn render-chapter-list
     "Render chapter list for selected product."
-    [url-prefix title product-id chapter-list]
+    [url-prefix title product-id product-name chapter-list]
     (page/xhtml
         (render-html-header url-prefix title)
         [:body
             [:div {:class "container"}
                 (render-navigation-bar-section url-prefix title)
                 [:div {:class "container-fluid"}
-                [:h2 "Chapter for product"]
+                [:h2 (str "Chapters for product " product-name)]
                 [:table {:style "border-collapse: separate; border-spacing: 10px;"}
                     (for [chapter chapter-list]
                         [:tr
-                            [:td [:a {:href (str "?product-id=" product-id)} (:name chapter)]]])
+                            [:td [:a {:href (str "?product-id=" product-id "&chapter-id=" (:id chapter))} (:name chapter)]]])
                 ]]
                 (render-html-footer)
             ] ; </div class="container">


fix inline docs for readability and correctness

--- src/datascript/core.cljc
+++ src/datascript/core.cljc
@@ -494,7 +494,7 @@
       (transact! conn [[:db/add -1 :friend 296]])

       ; create an entity and set multiple attributes (in a single transaction
-      ; equal tempids will be replaced with the same unused yet entid)
+      ; equal tempids will be replaced with the same yet unused entid)
       (transact! conn [[:db/add -1 :name \"Ivan\"]
                        [:db/add -1 :likes \"fries\"]
                        [:db/add -1 :likes \"pizza\"]
@@ -513,7 +513,7 @@
                         :name   \"Oleg\"
                         :likes  [\"fish\"]}])

-      ; ref attributes can be specified as nested map, that will create netsed entity as well
+      ; ref attributes can be specified as nested map, that will create nested entity as well
       (transact! conn [{:db/id  -1
                         :name   \"Oleg\"
                         :friend {:db/id -2
@@ -529,7 +529,7 @@
                        {:db/id 296, :friend -1}])
       ; equivalent to
       (transact! conn [[:db/add  -1 :name   \"Oleg\"]
-                       {:db/add 296 :friend -1]])"
+                       [:db/add 296 :friend -1]])"
   ([conn tx-data] (transact! conn tx-data nil))
   ([conn tx-data tx-meta]
     {:pre [(conn? conn)]}


Oookay. So:

Oookay. So:

1) expose the name of the default backend through a var
2) set the default backend using the control var (this makes the default
backend query-able)
3) build the available backends list by asking each backend for its
name, instead of manually writing a map from string to instance.

This seems... less dumb.

--- src/doctopus/storage.clj
+++ src/doctopus/storage.clj
@@ -45,7 +45,10 @@
     (let [remove-fn (get-in this [:backend :remove-fn])]
       (remove-fn k))))

-(def available-backends {:temp-fs storage-impls/temp-fs-backend
-                         :perm-fs storage-impls/permanent-fs-backend})
+(def available-backends
+  (let [backends [storage-impls/temp-fs-backend
+                  storage-impls/permanent-fs-backend]]
+    (into {} (for [b backends] [(:name b) b]))))

-(def backend (Backend. storage-impls/permanent-fs-backend available-backends))
+(def default-backend :perm-fs)
+(def backend (Backend. default-backend available-backends))


fix unmatched delimiter

fix unmatched delimiter

--- src/mobile_patient/events.cljs
+++ src/mobile_patient/events.cljs
@@ -346,6 +346,7 @@
               :success :on-get-medication-statements
               :opts {:parms {:subject (:id user-ref)}
                      :method "GET"}}})))
+(reg-event-fx
  :on-submit-demographics
  (fn [{:keys [db]} [_ resource-type-data]]
    {:db (merge db {:resource-type-data resource-type-data})


Make Timer a delay animation. Enable adding functions to the animation queue.

--- src/lib/cljs/one/browser/animation.cljs
+++ src/lib/cljs/one/browser/animation.cljs
@@ -768,3 +768,23 @@
      (play-animation animation {}))
   ([animation opts]
      (play nil animation opts)))
+
+(extend-type goog.Timer
+  one.core/Startable
+  (start [this]
+    (event/listen-once this "tick"
+                       (fn [e] (.dispatchEvent this "finish")
+                         (dispose this)))
+    (.start this ()))
+  one.core/Disposable
+  (dispose [this]
+    (.dispose this ())))
+
+(defn play-fn
+  "Add a function to the animation queue with an optional delay. The
+function will be run before the delay."
+  ([f]
+     (play-fn f 1))
+  ([f delay]
+     (play-animation (fn [] (goog.Timer. delay))
+                     {:before f})))


Make no-project-needed set an atom so plugins can add to it.

--- src/leiningen/core.clj
+++ src/leiningen/core.clj
@@ -51,7 +51,7 @@
 (def aliases {"--help" "help" "-h" "help" "-?" "help" "-v" "version"
               "--version" "version" "überjar" "uberjar"})

-(def no-project-needed #{"new" "help" "version"})
+(def no-project-needed (atom #{"new" "help" "version"}))

 (defn resolve-task [task]
   (let [task-ns (symbol (str "leiningen." task))
@@ -69,7 +69,7 @@

 (defn -main [& [task & args]]
   (let [task (or (aliases task) task "help")
-        args (if (no-project-needed task)
+        args (if (@no-project-needed task)
                args
                (conj args (read-project)))
         compile-path (:compile-path (first args))]


Don't shutdown agents in core; test task can handle that.

--- src/leiningen/core.clj
+++ src/leiningen/core.clj
@@ -116,7 +116,5 @@
          ;; TODO: wrap tasks in run-task using alter-var-root
          (let [value (run-task task args)]
            (when (integer? value)
-             (System/exit value))))
-       ;; In case tests or some other task started any:
-       (shutdown-agents)))
+             (System/exit value))))))
   ([] (apply -main (or *command-line-args* ["help"]))))


remove video info if video id is changed.

--- src/oc/storage/api/entries.clj
+++ src/oc/storage/api/entries.clj
@@ -164,15 +164,19 @@
             user (:user ctx)
             entry (:existing-entry ctx)
             updated-entry (:updated-entry ctx)
-            updated-result (entry-res/update-entry! conn (:uuid updated-entry) updated-entry user)]
+            updated-video (if (not= (:video-id updated-entry) (:video-id entry))
+                            (-> updated-entry
+                                (dissoc :video-processed)
+                                (dissoc :video-transcript))
+                            updated-entry)
+            updated-result (entry-res/update-entry! conn (:uuid updated-video) updated-video user)]
     (let [old-board (:moving-board ctx)]
       ;; If we are moving the entry from a draft board, check if we need to remove the board itself.
       (when old-board
         (let [remaining-entries (entry-res/list-all-entries-by-board conn (:uuid old-board))]
           (board-res/maybe-delete-draft-board conn org old-board remaining-entries user)))
       (timbre/info "Updated entry for:" entry-for)
-      (when (not= (:video-id updated-entry) (:video-id entry))
-        (handle-video-data conn updated-result))
+      (handle-video-data conn updated-result)
       (notification/send-trigger! (notification/->trigger :update org board {:old entry :new updated-result} user nil))
       {:updated-entry (assoc updated-result :board-name (:name board))})


need access

need access

--- src/oc/storage/util/search.clj
+++ src/oc/storage/util/search.clj
@@ -47,7 +47,7 @@
 (defn index-all-entries [conn]
   (let [now (db-common/current-timestamp)]
     (doseq [org (org-res/list-orgs conn [:team-id])]
-      (let [boards (board-res/list-boards-by-org conn (:uuid org))
+      (let [boards (board-res/list-boards-by-org conn (:uuid org) [:access])
             allowed-boards (vec (map :uuid boards))
             entries (entry-res/list-entries-by-org conn (:uuid org) :desc now :before allowed-boards)]
         (doseq [entry entries]


thaw ex-info using custom edn reader

thaw ex-info using custom edn reader

--- src/onyx/compression/nippy.clj
+++ src/onyx/compression/nippy.clj
@@ -9,9 +9,29 @@
                                                   :str (.getMessage x)
                                                   :cause (.getCause x)})))

+(defn exception-info-reader [tag value]
+  (let [maybe-record? (pos? (.indexOf (name tag) "."))]
+    (if-not maybe-record?
+      {:tag (keyword tag)
+       :value value
+       :deserialize-attempted? false}
+      (try
+        (let [rec-class (Class/forName (name tag))
+              create-method (.getMethod rec-class
+                                        "create"
+                                        (into-array Class [clojure.lang.IPersistentMap]))]
+          (.invoke create-method rec-class (into-array Object [value])))
+        (catch Throwable ex
+          {:tag (keyword tag)
+           :value value
+           :deserialize-attempted? true
+           :deserialize-exception-type (keyword (type ex))})))))
+
 (nippy/extend-thaw :onyx/exception-info
                    [data-input]
-                   (let [{:keys [ex str cause]} (read-string (.readUTF data-input))]
+                   (let [{:keys [ex str cause]}
+                         (clojure.edn/read-string {:default exception-info-reader}
+                                                  (.readUTF data-input))]
                      (clojure.lang.ExceptionInfo. str ex cause)))

 (def messaging-compress-opts {})


Fixed issue #47

Fixed issue #47

--- src/clojure/alfresco_technical_validation/impl/validations/dev.clj
+++ src/clojure/alfresco_technical_validation/impl/validations/dev.clj
@@ -51,7 +51,9 @@
                                      ORDER BY n.name
                                    ")
         java-webscript-count (count res)
-        java-webscript-ratio (float (* 100 (/ java-webscript-count webscript-count)))]
+        java-webscript-ratio (if (= 0 webscript-count)
+                               0.0
+                               (float (* 100 (/ java-webscript-count webscript-count))))]
     (declare-result "DEV02" (< java-webscript-ratio 50) (str java-webscript-count " of " webscript-count " Web Scripts are Java-backed."))))

 (def tests


Use last two data points in sparkline summary rather than first and last. Take out relative date formatting (today/yesterday)

--- src/metabase/pulse.clj
+++ src/metabase/pulse.clj
@@ -76,12 +76,7 @@
     :day-of-week (str timestamp)
     :week-of-year (str timestamp)
     :month-of-year (str timestamp)
-    (let [date (c/from-long timestamp)
-          today (t/today-at 0 00)]
-      (cond
-        (t/within? (t/interval today (t/plus today (t/days 1))) date) "Today"
-        (t/within? (t/interval (t/minus today (t/days 1)) today) date) "Yesterday"
-        :else (f/unparse (f/formatter "MMM d, YYYY") date)))))
+    (f/unparse (f/formatter "MMM d, YYYY") (c/from-long timestamp))))

 (defn- format-cell
   [value col]
@@ -258,7 +253,7 @@
   [:div
     [:img {:style "display: block" :src (render-img (render-sparkline-with-axis-to-png card data))}]
     [:div {:style "margin-top: 20px; margin-left: 30px;"}
-      (render-table card [(last rows) (first rows)] cols render-img [0 1] nil)]])
+      (render-table card (reverse (take-last 2 rows)) cols render-img [0 1] nil)]])

 (defn detect-pulse-card-type
   [card data]


fix libs task to handle checkouts correctly

Signed-off-by: Gregg Reynolds <d0f77bc71a9867acdcb4f62f012b858edad79160@norc.org>

--- src/migae/boot_gae.clj
+++ src/migae/boot_gae.clj
@@ -992,22 +992,21 @@
                         (into {}))
         cache      (boot/cache-dir! ::uber :global true)
         ]
-    (if (empty? cos)
-      (do
+    ;; (if (empty? cos)
+    ;;   (do
         ;;(println "NO CHECKOUTS")
-          (comp
-           (builtin/uber :as-jars true :exclude-scope #{"provided"})
-           ;; (builtin/sift :include #{#"zip$"} :invert true)
-           ;; (builtin/sift :include #{#".*appengine-api-.*jar$"} :invert true)
-           ;; (builtin/sift :include #{#".*jar$"})
-           (builtin/sift :move {#"(.*\.jar$)" (str lib-dir "/$1")})))
-      (boot/with-pre-wrap [fileset]
-        ;;(println "CHECKOUTS")
+    ;; )
+    ;; also copy checkout deps
+    ;;(if (not (empty? cos))
+    (comp
+     (boot/with-pre-wrap [fileset]
+        (if verbose (println "CHECKOUTS: " cos))
         (let [tmpdir     (boot/tmp-dir!)]
           (doseq [co cos]
             (let [mod (if (:default co) "default"
                           (if-let [mod (:module co)]
-                            mod "default"))
+                            (str mod "/")
+                            ""))
                   coords (:coords co)
                   pod-env (update-in (dissoc (boot/get-env) :checkouts)
                                      [:dependencies] #(identity %2)
@@ -1032,7 +1031,7 @@
                   (doseq [jar jars]
                     (let [hash (digest/md5 jar)
                           name (str hash "-" (.getName jar))
-                          tmpjar-path (str ~mod "/WEB-INF/lib/" (.getName jar))
+                          tmpjar-path (str ~mod "WEB-INF/lib/" (.getName jar))
                           cached-jar  (io/file ~(.getPath cache) hash)]
                       (when-not (.exists cached-jar)
                         (if ~verbose (util/info "Caching jar %s...\n" name))
@@ -1040,7 +1039,14 @@
                       (if ~verbose (util/info "Adding cached jar %s...\n" tmpjar-path))
                       (file/hard-link cached-jar (doto (io/file ~(.getPath tmpdir) tmpjar-path)
                                                    io/make-parents))))))))
-          (boot/commit! (boot/add-resource fileset tmpdir)))))))
+          (boot/commit! (boot/add-resource fileset tmpdir))))
+     ;; always copy deps
+     (builtin/uber :as-jars true
+                   :exclude-scope #{"provided"}
+                   ;; FIXME: include scope test only in dev env.
+                   :include-scope #{"test" "compile"}
+                   )
+     (builtin/sift :move {#"(.*\.jar$)" (str lib-dir "/$1")}))))

                   ;; (recur (rest jars)
                   ;;        fs


Accept single quotes inside symbol names (and also at the end).


Example formatter names don't work

Example formatter names don't work

--- src/java_time/format.clj
+++ src/java_time/format.clj
@@ -23,7 +23,7 @@
   "Constructs a DateTimeFormatter out of a

   * format string - \"YYYY/mm/DD\", \"YYY HH:MM\", etc.
-  * formatter name - :date, :time-no-millis, etc.
+  * formatter name - :iso-date, :iso-time, etc.

   Accepts a map of options as an optional second argument:


debug msg removed

debug msg removed

--- src/logic/truthtable.clj
+++ src/logic/truthtable.clj
@@ -35,7 +35,7 @@

     ; print original formula
     (println "Truth table for formula:" formula)
-    (println var-spaces)
+
     ; print header
 	  (doseq [sym symbols]
 	    (print (name sym) ""))


Allow render-sorted! to use a custom sorting function

--- src/play_clj/core_graphics.clj
+++ src/play_clj/core_graphics.clj
@@ -386,29 +386,37 @@
                   y (range (- (.getHeight l) 1) -1 -1)]
               {:x x :y y}))))

+(defn ^:private sort-by-y
+  [entities]
+  (sort-by :y #(compare %2 %1) entities))
+
 (defn render-sorted!
-  "Draws the supplied tiled-map layers and entities, sorted by latitude.
-
-    (render-sorted! screen [\"walls\"] entities)"
-  [{:keys [^BatchTiledMapRenderer renderer
-           ^Camera camera
-           update-fn!]
-    :as screen}
-   layer-names entities]
-  (doseq [ln layer-names]
-    (when-not (get-in screen [:layers ln])
-      (update-fn! assoc-in [[:layers ln] (split-layer screen ln)])))
-  (when camera (.setView renderer camera))
-  (let [^SpriteBatch batch (.getSpriteBatch renderer)]
-    (.begin batch)
-    (doseq [entity (->> (map #(get-in screen [:layers %]) layer-names)
-                        (apply concat entities)
-                        (sort-by :y #(compare %2 %1)))]
-      (if-let [layer (:layer entity)]
-        (.renderTileLayer renderer layer)
-        (e/draw-entity! entity batch)))
-    (.end batch))
-  entities)
+  "Draws the supplied tiled-map layers and entities. If no sort function is
+supplied, they will be sorted by :y (latitude).
+
+    (render-sorted! screen [\"walls\"] entities)
+    (render-sorted! screen #(sort-by :x %) [\"walls\"] entities)"
+  ([screen layer-names entities]
+    (render-sorted! sort-by-y screen layer-names entities))
+  ([{:keys [^BatchTiledMapRenderer renderer
+            ^Camera camera
+            update-fn!]
+     :as screen}
+    sort-fn layer-names entities]
+    (doseq [ln layer-names]
+      (when-not (get-in screen [:layers ln])
+        (update-fn! assoc-in [[:layers ln] (split-layer screen ln)])))
+    (when camera (.setView renderer camera))
+    (let [^SpriteBatch batch (.getSpriteBatch renderer)]
+      (.begin batch)
+      (doseq [entity (->> (map #(get-in screen [:layers %]) layer-names)
+                          (apply concat entities)
+                          sort-fn)]
+        (if-let [layer (:layer entity)]
+          (.renderTileLayer renderer layer)
+          (e/draw-entity! entity batch)))
+      (.end batch))
+    entities))

 (defmacro render-shapes!
   "Draws shapes with a `shape` renderer.


'has voted enough' check >= instead of >

--- src/polismath/conversation.clj
+++ src/polismath/conversation.clj
@@ -97,7 +97,7 @@
                           (fn [[rowname cnt]]
                             ; We only start looking at a ptpt if they have rated either all the comments or at
                             ; least 7 if there are more than 7
-                            (> cnt (min 7 n-cmts)))
+                            (>= cnt (min 7 n-cmts)))
                           user-vote-counts)))))
                          })


pretty print pprint

pretty print pprint

--- src/polismath/play.clj
+++ src/polismath/play.clj
@@ -3,6 +3,7 @@
             [plumbing.graph :as graph])
   (:use clojure.data.csv
         clojure.java.io
+        clojure.pprint
         criterium.core
         polismath.conversation
         polismath.pca
@@ -27,7 +28,7 @@
                                      {:pid 'd :tid 'y :vote 1}
                                      ]}))

-(println results)
+(pprint results)

 (defn -main []
   (println "Running main"))


Only include examples when developing, not when testing

This ensures that any specs (e.g. :db/id or :user/name) defined in
examples don't clash with the same specs defined in tests such as
the ones in workflo.macros.entity.schema-test.

--- build.boot
+++ build.boot
@@ -1,7 +1,7 @@
 #!/usr/bin/env boot

 (set-env!
- :resource-paths #{"resources" "src/main" "src/docs" "src/examples"}
+ :resource-paths #{"resources" "src/main" "src/docs"}
  :dependencies '[;; Boot setup
                  [adzerk/boot-cljs "1.7.228-1"]
                  [adzerk/boot-reload "0.4.12"]
@@ -56,6 +56,11 @@
             :license {"MIT License"
                       "https://opensource.org/licenses/MIT"}})

+(deftask developing
+  []
+  (merge-env! :source-paths #{"src/examples"})
+  identity)
+
 (deftask build-dev
   []
   (comp
@@ -74,6 +79,7 @@
 (deftask dev
   []
   (comp
+    (developing)
     (watch)
     (reload :on-jsload 'workflo.macros.examples.screen-app/reload)
     (build-dev)


Rename tasks

Rename tasks

--- build.boot
+++ build.boot
@@ -17,7 +17,7 @@
          '[clojure.java.shell :as sh]
          '[deraen.boot-less :refer [less]])

-(deftask server-repl
+(deftask server
   "Override"
   []
   (set-env!
@@ -44,8 +44,8 @@
                    [yada "1.1.0-20160126.014942-13"]])
   (repl :init-ns 'user :server true))

-(deftask dev
-  "Simple alias to run application in development mode"
+(deftask frontend
+  "Simple alias to run frontend application"
   []
   (set-env! :target-path "target/dev"
             :source-paths #(conj % "sass")
@@ -60,9 +60,11 @@
    (cljs :ids #{"edge"} :optimizations :none)
    (target :dir #{"target/dev"})))

-(deftask build []
-  (set-env! :target-path "target/prod")
-  (comp
-   (less :source-map false)
-   (cljs :ids #{"edge"} :optimizations :advanced)
-   (target :dir #{"target/prod"})))
+(deftask build-frontend
+ "Compiles frontend application"
+ []
+ (set-env! :target-path "target/prod")
+ (comp
+  (less :source-map false)
+  (cljs :ids #{"edge"} :optimizations :advanced)
+  (target :dir #{"target/prod"})))


remove data readers task; apparently unnecessary in boot 2.6?

--- build.boot
+++ build.boot
@@ -41,13 +41,6 @@
   '[crisptrutski.boot-cljs-test  :refer [test-cljs]]
   '[pandeiro.boot-http    :refer [serve]])

-(deftask data-readers []
-  (fn [next-task]
-    (fn [fileset]
-      (#'clojure.core/load-data-readers)
-      (with-bindings {#'*data-readers* (.getRawRoot #'*data-readers*)}
-        (next-task fileset)))))
-
 (deftask auto-test []
   (merge-env! :resource-paths #{"test"})
   (comp (watch)
@@ -65,14 +58,12 @@
      (reload :on-jsload 'relembra.core/main
              ;; XXX: make this configurable
              :open-file "emacsclient -n +%s:%s %s")
-     (data-readers)
      (cljs-repl)
      (cljs :source-map true :optimizations :none)
      (target :dir #{"target"})))

 (deftask build []
   (comp
-   (data-readers)
    (cljs :optimizations :advanced)
    (aot :namespace '#{relembra.core})
    (pom :project 'relembra


Update to work with latest boot.

Update to work with latest boot.

--- build.boot
+++ build.boot
@@ -16,5 +16,5 @@
        :description "Boot task to execute JRuby code."
        :url "https://github.com/tobias/boot-jruby"
        :scm {:url "https://github.com/tobias/boot-jruby"}
-       :license {:name "Apache Software License - v 2.0"
-                 :url "http://www.apache.org/licenses/LICENSE-2.0"}})
+       :license {"Apache Software License - v 2.0"
+                 "http://www.apache.org/licenses/LICENSE-2.0"}})


Simplify package versions, rename it to workfloapp/app-macros

--- build.boot
+++ build.boot
@@ -25,7 +25,7 @@
          '[crisptrutski.boot-cljs-test :refer [test-cljs exit!]]
          '[pandeiro.boot-http :refer [serve]])

-(def version "0.1.0-alpha1-SNAPSHOT")
+(def version "0.1.0-SNAPSHOT")

 (bootlaces! version :dont-modify-paths? true)

@@ -38,7 +38,7 @@
             :ensure-clean true
             :ensure-tag (last-commit)
             :ensure-version version}
- pom       {:project 'app-macros
+ pom       {:project 'workfloapp/app-macros
             :version version
             :description "Clojure macros for web and mobile development"
             :url "https://github.com/workfloapp/app-macros"
@@ -87,3 +87,10 @@
     (watch)
     (test-cljs)
     (test)))
+
+(deftask install-local
+  []
+  (comp
+    (pom)
+    (jar)
+    (install)))


Add support for focus-gained and focus-lost callback fns

--- src/processing/core/applet.clj
+++ src/processing/core/applet.clj
@@ -81,7 +81,8 @@
   (let [options           (merge {:size [500 300]} (apply hash-map opts))
         fns               (dissoc options :name :title :size :key-pressed
                                   :key-released :mouse-pressed :mouse-released
-                                  :mouse-moved :mouse-dragged :setup)
+                                  :mouse-moved :mouse-dragged :focus-gained
+                                  :focus-lost :setup)
         fns               (merge {:draw (fn [] nil)} fns)
         key-pressed-fn    (or (:key-pressed options) (fn [] nil))
         key-released-fn   (or (:key-released options) (fn [] nil))
@@ -89,6 +90,8 @@
         mouse-released-fn (or (:mouse-released options) (fn [] nil))
         mouse-moved-fn    (or (:mouse-moved options) (fn [] nil))
         mouse-dragged-fn  (or (:mouse-dragged options) (fn [] nil))
+        focus-gained-fn   (or (:focus-gained options) (fn [] nil))
+        focus-lost-fn     (or (:focus-lost options) (fn [] nil))
         setup-fn          (fn []
                             (apply applet-set-size (:size options))
                             (when (:setup options)
@@ -139,6 +142,23 @@
                               ([e]
                                  (proxy-super mouseDragged e)))

+                            (focusGained
+                              ([] nil) ;;The no arg version of the focus
+                                       ;;fns don't appear to be called
+                              ([e]
+                                 (proxy-super focusGained e)
+                                 (binding [*applet* this
+                                           *state* state]
+                                   (focus-gained-fn))))
+
+                            (focusLost
+                              ([] nil)
+                              ([e]
+                                 (proxy-super focusLost e)
+                                 (binding [*applet* this
+                                            *state* state]
+                                    (focus-lost-fn))))
+
                             (setup
                               ([] (binding [*applet* this
                                             *state* state]


(EZ-105) Abort when subprocesses exit w/ non-zero code.

--- src/puppetlabs/ezbake/exec.clj
+++ src/puppetlabs/ezbake/exec.clj
@@ -22,7 +22,7 @@
             result (apply program (flatten [args options]))
             exit-code (get-in result [:exit-code])]
         (when-not (= 0 @exit-code)
-          (lein-main/warn
+          (lein-main/abort
             (format "Subprocess command failed with non-zero exit code\n %s"
                     (str/join " " p-args))))
         (:proc result)))))


Complete ns imports

Complete ns imports

--- src/reply/completion/jline.clj
+++ src/reply/completion/jline.clj
@@ -48,7 +48,7 @@
             (- cursor prefix-length)))))))

 (defn make-var-completer [ns]
-  (let [collections ((juxt ns-publics ns-refers) ns)]
+  (let [collections ((juxt ns-publics ns-refers ns-imports) ns)]
     (make-completer
       (apply concat
         (map (comp sort (partial map str) keys)


[#74] fix test typo

[#74] fix test typo

--- api/test/clojure/org/akvo/flow_api/datastore/form_instance_test.clj
+++ api/test/clojure/org/akvo/flow_api/datastore/form_instance_test.clj
@@ -71,7 +71,7 @@
             :long 2.0
             :elev 3.0
             :code "foo"}))
-    (is (= (form-instance/parse-response "GEO" "||||" {})
+    (is (= (form-instance/parse-response "GEO" "|||" {})
            nil))
     (is (= (form-instance/parse-response "GEO" "1.0|2.0||" {})
            {:lat 1.0


Lock to Clojure 1.3.0-alpha1 while the dust settles.

--- project.clj
+++ project.clj
@@ -6,8 +6,8 @@
   :description "A build tool designed not to set your hair on fire."
   :url "http://github.com/technomancy/leiningen"
   :license {:name "Eclipse Public License"}
-  :dependencies [[org.clojure/clojure "1.3.0-master-SNAPSHOT"]
-                 [org.clojure.contrib/standalone "1.3.0-SNAPSHOT"]
+  :dependencies [[org.clojure/clojure "1.3.0-alpha1"]
+                 [org.clojure.contrib/complete "1.3.0-alpha1" :classifier "bin"]
                  [ant/ant "1.6.5"]
                  [jline "0.9.94"]
                  [robert/hooke "1.0.2"]


Revert "Updated deps"

Revert "Updated deps"

This reverts commit 64c40137013ef441ea95d08e80c90891c22a58b7.

--- project.clj
+++ project.clj
@@ -6,9 +6,9 @@
                       :url  "http://www.apache.org/license/LICENSE-2.0.html"}
             :scm {:name "git"
                   :url  "https://github.com/otto-de/oscillator"}
-            :plugins [[lein-cljsbuild "1.1.4"]]
+            :plugins [[lein-cljsbuild "1.0.6"]]
             :dependencies [[org.clojure/clojure "1.8.0"]
-                           [compojure "1.5.1"]
+                           [compojure "1.3.4"]
                            [hiccup "1.0.5"]
                            [org.clojure/data.json "0.2.6"]]
             :lein-release {:deploy-via :clojars}
@@ -20,9 +20,9 @@
                                                       :optimizations :whitespace
                                                       :pretty-print  true}}}}
             :hooks [leiningen.cljsbuild]
-            :profiles {:provided {:dependencies [[org.clojure/clojurescript "1.9.229"]
-                                                 [cljs-ajax "0.5.8"]
+            :profiles {:provided {:dependencies [[org.clojure/clojurescript "1.7.48"]
+                                                 [cljs-ajax "0.3.13"]
                                                  [prismatic/dommy "1.1.0"]
-                                                 [hipo "0.5.2"]]}
+                                                 [hipo "0.4.0"]]}
                        :dev      {:plugins [[lein-release/lein-release "1.0.9"]]}
                        :uberjar  {:aot :all}})


Version 0.0.35-SNAPSHOT

Version 0.0.35-SNAPSHOT

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


Reformatted project.clj by zprint

Reformatted project.clj by zprint

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

 (defproject zg "0.1.0-SNAPSHOT"
-    :description "FIXME: write description"
-    :url "http://github.com/tisnik/zg"
-    :license {:name "Eclipse Public License"
-              :url "http://www.eclipse.org/legal/epl-v10.html"}
-    :dependencies [[org.clojure/clojure "1.8.0"]
-                   [org.clojure/java.jdbc "0.3.5"]
-                   [org.clojure/tools.cli "0.3.1"]
-                   [org.clojure/data.csv  "0.1.2"]
-                   [org.xerial/sqlite-jdbc "3.7.2"]
-                   [clojure-ini "0.0.1"]
-                   [ring/ring-core "1.3.2"]
-                   [ring/ring-jetty-adapter "1.3.2"]
-                   [org.clojure/data.json "0.2.5"]
-                   [hiccup "1.0.4"]
-                   [org.clojure/tools.logging "0.3.1"]
-                   [log4j/log4j "1.2.17" :exclusions [javax.mail/mail
-                                                      javax.jms/jms
-                                                      com.sun.jmdk/jmxtools
-                                                      com.sun.jmx/jmxri]]
-                   [org.slf4j/slf4j-log4j12 "1.6.6"]]
-    :dev-dependencies [[lein-ring "0.8.10"]]
-    :plugins [[lein-ring "0.8.10"]
-              [codox "0.8.11"]
-              [test2junit "1.1.0"]
-              [lein-cloverage "1.0.7-SNAPSHOT"]]
-    :ring {:handler zg.core/app}
-    :main ^:skip-aot zg.core
-    :target-path "target/%s"
-    :profiles {:uberjar {:aot :all}})
+  :description "FIXME: write description"
+  :url "http://github.com/tisnik/zg"
+  :license {:name "Eclipse Public License",
+            :url "http://www.eclipse.org/legal/epl-v10.html"}
+  :dependencies [[org.clojure/clojure "1.8.0"]
+                 [org.clojure/java.jdbc "0.3.5"]
+                 [org.clojure/tools.cli "0.3.1"]
+                 [org.clojure/data.csv  "0.1.2"]
+                 [org.xerial/sqlite-jdbc "3.7.2"]
+                 [clojure-ini "0.0.1"]
+                 [ring/ring-core "1.3.2"]
+                 [ring/ring-jetty-adapter "1.3.2"]
+                 [org.clojure/data.json "0.2.5"]
+                 [hiccup "1.0.4"]
+                 [org.clojure/tools.logging "0.3.1"]
+                 [log4j/log4j "1.2.17" :exclusions [javax.mail/mail
+                                                    javax.jms/jms
+                                                    com.sun.jmdk/jmxtools
+                                                    com.sun.jmx/jmxri]]
+                 [org.slf4j/slf4j-log4j12 "1.6.6"]]
+  :dev-dependencies [[lein-ring "0.8.10"]]
+  :plugins [[lein-ring "0.8.10"]
+            [codox "0.8.11"]
+            [test2junit "1.1.0"]
+            [lein-cloverage "1.0.7-SNAPSHOT"]]
+  :ring {:handler zg.core/app}
+  :main ^:skip-aot zg.core
+  :target-path "target/%s"
+  :profiles {:uberjar {:aot :all}})


0.4.3

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
- (defproject com.ladderlife/om-css "0.4.3-SNAPSHOT"
+ (defproject com.ladderlife/om-css "0.4.3"
   :description "Om Next + CSS"
   :url "http://github.com/ladderlife/om-css"
   :license {:name "Eclipse Public License"


Update cross-parinfer

Update cross-parinfer

--- project.clj
+++ project.clj
@@ -31,7 +31,7 @@
                  [play-clj/lein-template "1.0.0"]
                  [seesaw "1.4.5"]
                  [tag-soup "1.1.5"]
-                 [cross-parinfer "1.0.1"]]
+                 [cross-parinfer "1.0.2"]]
   :uberjar-exclusions [#"PHPTokenMaker\.class"
                        #"org\/apache\/lucene"]
   :resource-paths ["resources"]


Brought everything upto the latest levels.

--- project.clj
+++ project.clj
@@ -3,24 +3,25 @@
   :url "http://example.com/FIXME"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
-  :dependencies [[org.clojure/clojure "1.6.0"]
-                 [jarohen/chord "0.4.2" :exclusions [org.clojure/clojure]]
-                 [ring/ring-core "1.2.0"]
-                 [compojure "1.1.5"]
+  :dependencies [[org.clojure/clojure "1.8.0"]
+                 [jarohen/chord "0.7.0" :exclusions [org.clojure/clojure]]
+                 [ring/ring-core "1.4.0"]
+                 [compojure "1.5.0"]
                  [hiccup "1.0.5"]
-                 [org.clojure/core.async "0.1.301.0-deb34a-alpha"]
-                 [org.clojure/clojurescript "0.0-2411"]
-                 [jayq "2.5.2"]]
+                 [org.clojure/core.async "0.2.374"]
+                 [org.clojure/clojurescript "1.7.228"]
+                 [ring/ring-jetty-adapter "1.1.0"]
+                 [jayq "2.5.4"]]
   :main ^:skip-aot flot.core
   :target-path "target/%s"
-  :profiles {:uberjar {:aot :all}}
+  :profiles {:uberjar {:aot :all}
+             :dependencies [[javax.servlet/servlet-api "2.5"]]}

-  :plugins [[lein-cljsbuild "1.0.4-SNAPSHOT"]]
+  :plugins [[lein-cljsbuild "1.1.3"]]

   :cljsbuild {
-    :builds [{:source-paths ["src-cljs"]
-              :compiler {
-                :output-to "resources/public/js/flot.js"
-                ;;:output-dir ""
-               :optimizations :whitespace
-                :pretty-print true}}]})
+              :builds [{:source-paths ["src-cljs"]
+                        :compiler {
+                                   :output-to "resources/public/js/flot.js"
+                                   :optimizations :advanced
+                                   :pretty-print true}}]})


fixed clean issue

fixed clean issue

--- project.clj
+++ project.clj
@@ -59,4 +59,4 @@
                           :target :nodejs
                           :optimizations :none}}]}

-  :clean-targets ["target/" "resources/public/js/"])
+  :clean-targets ["target/"])


lein-release plugin: bumped version from 0.48 to 0.49-SNAPSHOT for next development cycle

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject shuppet "0.48"
+(defproject shuppet "0.49-SNAPSHOT"
   :description "Shuppet service"
   :url "http://wikis.in.nokia.com/NokiaMusicArchitecture/Shuppet"


[Issue #103] adding in a forgotten ~

[Issue #103] adding in a forgotten ~

--- project.clj
+++ project.clj
@@ -20,7 +20,7 @@
                "1.2.1" [[org.clojure/clojure "1.2.1"]]
                "1.3.0" [[org.clojure/clojure "1.3.0"]]
                "1.4.0" [[org.clojure/clojure "1.4.0-beta1"]]
-               :all common-deps }
+               :all ~common-deps }
   :dev-dependencies [[slamhound "1.2.0"]
                      [com.intelie/lazytest "1.0.0-SNAPSHOT" :exclusions [swank-clojure]]]


Start 0.3.9-SNAPSHOT

Start 0.3.9-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject play-clj "0.3.8"
+(defproject play-clj "0.3.9-SNAPSHOT"
   :description "A LibGDX wrapper for easy cross-platform game development"
   :url "https://github.com/oakes/play-clj"
   :license {:name "Public Domain"


Add codox plugin.

Add codox plugin.

--- project.clj
+++ project.clj
@@ -1,5 +1,5 @@
 (defproject simple "0.1.0-SNAPSHOT"
-  :description "FIXME: write description"
+  :description "A very simple CI server for individual projects."
   :url "https://github.com/fhofherr/simple"
   :license {:name "MIT"
             :url "http://opensource.org/licenses/MIT"}
@@ -10,6 +10,12 @@
   :target-path "target/%s"
   :test-selectors {:unit (complement :integration)
                    :integration :integration}
+  :plugins [[codox "0.8.15" :exclusions [[org.clojure/clojure]]]]
+  :codox {:output-dir "target/doc/api"
+          :src-dir-uri "https://github.com/fhofherr/simple/blob/master/"
+          :src-linenum-anchor-prefix "L"
+          :defaults {:doc/format :markdown}
+          :exclude [user]}
   :profiles {:dev {:source-paths ["dev"]
                    :resource-paths ["dev-resources" "test-resources"]
                    :dependencies [[org.clojure/tools.namespace "0.2.11"]]}


Update dependencies.

Update dependencies.

--- project.clj
+++ project.clj
@@ -22,14 +22,14 @@
     [http-kit "2.2.0-alpha1"] ; Development Web server http://http-kit.org/
     [compojure "1.5.0"] ; Web routing https://github.com/weavejester/compojure
     [jumblerg/ring.middleware.cors "1.0.1"] ; CORS library https://github.com/jumblerg/ring.middleware.cors
-    [raven-clj "1.3.1"] ; Clojure interface to Sentry error reporting https://github.com/sethtrain/raven-clj
+    [raven-clj "1.3.2"] ; Clojure interface to Sentry error reporting https://github.com/sethtrain/raven-clj
     [enlive "1.1.6"] ; HTML Templating system for Clojure https://github.com/cgrand/enlive
     [com.taoensso/carmine "2.13.0-RC1"] ; Redis client for Clojure https://github.com/ptaoussanis/carmine
     [clj-time "0.11.0"] ; Clojure date/time library https://github.com/clj-time/clj-time
     [environ "1.0.3"] ; Get environment settings from different sources https://github.com/weavejester/environ
     [cheshire "5.6.1"] ; JSON de/encoding https://github.com/dakrone/cheshire
     [org.clojure/data.xml "0.1.0-beta1"] ; XML parser/encoder https://github.com/clojure/data.xml
-    [clj-http "3.0.1"] ; HTTP client https://github.com/dakrone/clj-http
+    [clj-http "3.1.0"] ; HTTP client https://github.com/dakrone/clj-http
     ;; Client-side
     [org.clojure/clojurescript "1.8.51"] ; ClojureScript compiler https://github.com/clojure/clojurescript
     [jayq "2.5.4"] ; ClojureScript wrapper for jQuery https://github.com/ibdknox/jayq


swagger1st version 0.16.1

swagger1st version 0.16.1

--- project.clj
+++ project.clj
@@ -13,7 +13,7 @@
   :java-source-paths ["java"]

   :dependencies [[org.clojure/clojure "1.7.0"]
-                 [org.zalando/swagger1st "0.16.0"]
+                 [org.zalando/swagger1st "0.16.1"]
                  [org.zalando.stups/txdemarcator "0.7.0"]
                  [com.stuartsierra/component "0.2.3"]
                  [ring "1.4.0"]


Version bump.

Version bump.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clojush "2.0.35"
+(defproject clojush "2.0.36"
   :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.8.0 release

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

-(defproject puppetlabs/trapperkeeper-webserver-jetty9 "0.8.0-SNAPSHOT"
+(defproject puppetlabs/trapperkeeper-webserver-jetty9 "0.8.0"
   :description "We are trapperkeeper.  We are one."
   ;; Abort when version ranges or version conflicts are detected in
   ;; dependencies. Also supports :warn to simply emit warnings.


Update yada version to overcome filename too long error.

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

                  [bidi "2.0.16"]
                  [aleph "0.4.1"]
-                 [yada "1.2.0"]
+                 [yada "1.2.1"]

                  ;; these are temporary. eventually will call an ecommerce service for this data
                  [mysql/mysql-connector-java "5.1.6"]


Update dependencies.

Update dependencies.

--- project.clj
+++ project.clj
@@ -4,8 +4,8 @@
   :license {:name "BSD (2-Clause)"
             :url "http://opensource.org/licenses/BSD-2-Clause"}
   :dependencies [[org.clojure/clojure "1.8.0" :scope "provided"]
-                 [org.clojure/clojurescript "1.9.229" :scope "provided"]
-                 [funcool/beicon "2.3.0"]]
+                 [org.clojure/clojurescript "1.9.293" :scope "provided"]
+                 [funcool/beicon "2.5.0"]]
   :deploy-repositories {"releases" :clojars
                         "snapshots" :clojars}
   :source-paths ["src" "assets"]


Version 43-SNAPSHOT

Version 43-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clojars-web "42"
+(defproject clojars-web "43-SNAPSHOT"
   :min-lein-version "2.0.0"
   :dependencies [[org.clojure/clojure "1.8.0"]
                  [org.clojure/tools.cli "0.2.1"]


New version

New version

--- project.clj
+++ project.clj
@@ -1,6 +1,6 @@
 ;; Copyright © 2015, JUXT LTD.

-(defproject aero "0.2.0"
+(defproject aero "0.2.1"
   :description "Light and fluffy configuration"
   :url "http://github.com/juxt/aero"
   :license {:name "The MIT License"


Adding nofiy command

Adding nofiy command

--- project.clj
+++ project.clj
@@ -17,6 +17,7 @@
   :cljsbuild {
     :builds [{:id "cljs-node-pi"
               :source-paths ["src"]
+              :notify-command ["./rsync.sh"]
               :compiler {
                 :output-to "out/cljs_node_pi.js"
                 :output-dir "out"


(maint) Bump to ezbake 1.7.3

(maint) Bump to ezbake 1.7.3

This commit updates to the latest version of ezbake, which includes
packaging#1.0.x. This automation will enable shipping nightlies to weth, which
syncs to s3, and will ultimately be served on nightlies.puppet.com.

--- project.clj
+++ project.clj
@@ -211,7 +211,7 @@
                                                [puppetlabs/puppetserver ~ps-version :exclusions [puppetlabs/jruby-deps]]
                                                [puppetlabs/trapperkeeper-webserver-jetty9 nil]
                                                [org.clojure/tools.nrepl nil]]
-                      :plugins [[puppetlabs/lein-ezbake "1.6.6"]]
+                      :plugins [[puppetlabs/lein-ezbake "1.7.3"]]
                       :name "puppetserver"}
              :uberjar {:aot [puppetlabs.trapperkeeper.main]
                        :dependencies [[puppetlabs/trapperkeeper-webserver-jetty9 nil]]}


Upgrade dependencies (#90)

Upgrade dependencies (#90)

--- project.clj
+++ project.clj
@@ -4,26 +4,26 @@
   :license {:name "Eclipse Public License"
             :url  "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[org.clojure/clojure "1.10.1"]
-                 [cheshire "5.9.0"]
+                 [cheshire "5.10.0"]
                  [clj-stacktrace "0.2.8"]
-                 [org.apache.beam/beam-sdks-java-core "2.15.0"]
-                 [org.apache.beam/beam-sdks-java-io-elasticsearch "2.15.0"]
-                 [org.apache.beam/beam-runners-direct-java "2.15.0"]
-                 [org.apache.beam/beam-runners-google-cloud-dataflow-java "2.15.0"]
-                 [org.apache.beam/beam-runners-core-java "2.15.0"]
+                 [org.apache.beam/beam-sdks-java-core "2.20.0"]
+                 [org.apache.beam/beam-sdks-java-io-elasticsearch "2.20.0"]
+                 [org.apache.beam/beam-runners-direct-java "2.20.0"]
+                 [org.apache.beam/beam-runners-google-cloud-dataflow-java "2.20.0"]
+                 [org.apache.beam/beam-runners-core-java "2.20.0"]
                  [com.taoensso/nippy "2.14.0"]
                  [org.clojure/math.combinatorics "0.1.6"]
-                 [org.clojure/tools.logging "0.5.0"]
+                 [org.clojure/tools.logging "1.1.0"]
                  [clj-time "0.15.2"]
                  [superstring "3.0.0"]]
   :source-paths ["src/clj"]
   :pedantic? false
   :java-source-paths ["src/java"]
-  :profiles {:dev {:dependencies [[junit/junit "4.12"]
+  :profiles {:dev {:dependencies [[junit/junit "4.13"]
                                   [me.raynes/fs "1.4.6"]
                                   [org.hamcrest/hamcrest-all "1.3"]
-                                  [org.slf4j/slf4j-api "1.7.28"]
-                                  [org.slf4j/slf4j-jdk14 "1.7.28"]]
+                                  [org.slf4j/slf4j-api "1.7.30"]
+                                  [org.slf4j/slf4j-jdk14 "1.7.30"]]
                    :aot  [clojure.tools.logging.impl datasplash.api-test datasplash.examples clj-time.core datasplash.core clojure.tools.reader.reader-types]}
              :uberjar {:aot :all}}
   :main datasplash.examples)


Update project for development.

Update project for development.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject stencil "0.3.0"
+(defproject stencil "0.3.0-SNAPSHOT"
   :description "Mustache in Clojure"
   :dependencies [[org.clojure/clojure "1.3.0"]
                  [slingshot "0.8.0"]


Update clojurescript

Update clojurescript

--- project.clj
+++ project.clj
@@ -5,7 +5,7 @@
   :license {:name "MIT"}
   :description "A simple ClojureScript interface to React"
   :dependencies [[org.clojure/clojure "1.5.1"]
-                 [org.clojure/clojurescript "0.0-2120"]]
+                 [org.clojure/clojurescript "0.0-2138"]]
   :plugins [[lein-cljsbuild "1.0.1"]]
   ;; :hooks [leiningen.cljsbuild]
   :profiles {:prod {:cljsbuild


Move table to dev dependencies

Move table to dev dependencies

--- project.clj
+++ project.clj
@@ -31,12 +31,12 @@
                  [uk.co.real-logic/aeron-all "0.9"]
                  [prismatic/schema "1.0.3"]
                  [log4j/log4j "1.2.17"]
-                 [clj-tuple "0.2.2"]
-                 [table "0.5.0"]]
+                 [clj-tuple "0.2.2"]]
   :aot [onyx.interop]
   :jvm-opts ["-Xmx4g" "-XX:-OmitStackTraceInFastThrow"]
   :profiles {:dev {:aot ^:replace []
                    :dependencies [[org.clojure/tools.nrepl "0.2.11"]
+                                  [table "0.5.0"]
                                   [org.clojure/test.check "0.9.0"]
                                   [mdrogalis/stateful-check "0.3.2"]
                                   [com.gfredericks/test.chuck "0.2.3"]


Upgrade ring

Upgrade ring

--- project.clj
+++ project.clj
@@ -59,8 +59,8 @@
                  ;; WebAPI support libraries.
                  [net.cgrand/moustache "1.1.0" :exclusions [ring/ring-core org.clojure/clojure]]
                  [clj-http "0.5.3"]
-                 [ring/ring-core "1.1.1"]
-                 [ring/ring-jetty-adapter "1.1.1"]
+                 [ring/ring-core "1.1.8"]
+                 [ring/ring-jetty-adapter "1.1.8"]
                  [org.apache.commons/commons-compress "1.4.1"]]

   :profiles {:dev {:resource-paths ["test-resources"],


Bump version to 5.1.5-SNAPSHOT

Bump version to 5.1.5-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(def pdb-version "5.1.4")
+(def pdb-version "5.1.5-SNAPSHOT")
 (def puppetserver-version "5.1.0")
 (def clj-parent-version "1.4.3")


Update Kaocha: 0.0-413 -> 0.0-590

Update Kaocha: 0.0-413 -> 0.0-590

--- project.clj
+++ project.clj
@@ -12,7 +12,7 @@
                  [http-kit "2.1.19"]
                  [yleisradio/new-reliquary "1.0.1"]]
   :main nhl-score-api.core
-  :profiles {:kaocha {:dependencies [[lambdaisland/kaocha "0.0-413"]]}
+  :profiles {:kaocha {:dependencies [[lambdaisland/kaocha "0.0-590"]]}
              :uberjar {:aot :all}}
   :aliases {"kaocha" ["with-profile" "+kaocha" "run" "-m" "kaocha.runner" "--reporter" "kaocha.report/documentation"]}
   :plugins [[lein-heroku "0.5.3"]]


added http lib

added http lib

--- project.clj
+++ project.clj
@@ -7,6 +7,7 @@
                  [ring "1.4.0"]
                  [hiccup "1.0.5"]
                  [compojure "1.4.0"]
-                 [com.novemberain/monger "3.0.0-rc2"]]
+                 [com.novemberain/monger "3.0.0-rc2"]
+                 [clj-http "2.0.0"]]
   :plugins [[lein-ring "0.9.6"]]
   :ring {:handler collabify.core/app})


Remove :libs.

Remove :libs.

--- project.clj
+++ project.clj
@@ -45,5 +45,4 @@
              :compiler
              {:output-to "resources/js/main.js"
               :optimizations :whitespace
-              :libs ["processing.js"]
               :pretty-print true}}]})


bump version to snapshot

bump version to snapshot

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject datasplash "0.7.1"
+(defproject datasplash "0.7.2-SNAPSHOT"
   :description "Clojure API for a more dynamic Google Cloud Dataflow and (hopefully) Apache BEAM"
   :url "https://github.com/ngrunwald/datasplash"
   :license {:name "Eclipse Public License"


release 0.7.1

release 0.7.1

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject storm "0.7.1-SNAPSHOT"
+(defproject storm "0.7.1"
   :source-path "src/clj"
   :test-path "test/clj"
   :java-source-path "src/jvm"


(SERVER-273) Back jffi dep back down to 1.2.7

It looked like JRuby 1.7.19 was actually tested against jffi
version 1.2.7, and we didn't see anything in the jffi 1.2.8
release that looked like it warranted the risk of upgrading.
This commit takes us back to 1.2.7.

--- project.clj
+++ project.clj
@@ -20,8 +20,8 @@
                  [puppetlabs/http-client "0.4.0"]
                  [org.jruby/jruby-core "1.7.19"
                   :exclusions [com.github.jnr/jffi com.github.jnr/jnr-x86asm]]
-                 [com.github.jnr/jffi "1.2.8"]
-                 [com.github.jnr/jffi "1.2.8" :classifier "native"]
+                 [com.github.jnr/jffi "1.2.7"]
+                 [com.github.jnr/jffi "1.2.7" :classifier "native"]
                  [com.github.jnr/jnr-x86asm "1.0.2"]
                  ;; NOTE: jruby-stdlib packages some unexpected things inside
                  ;; of its jar; please read the detailed notes above the