beautify code

This commit is contained in:
didier amyot committed 2018-06-24 17:37:37 -04:00
1 parent 174319293c
commit c823775c0c
4 files changed
+22 -24

No files matched your search

+2 -2
View File
@@ -1,7 +1,7 @@
(ns book.cli (ns book.cli
(:require [book.match :refer [sell?]] (:require [book.match :refer [sell?]]
[book.util :refer :all] [book.util :refer :all]
[book.exchange :refer [empty-book create-exchange-for-security-2]] [book.exchange :refer [empty-book create-exchange-for-security]]
[book.order] ;; for spec side effect [book.order] ;; for spec side effect
[slingshot.slingshot :refer [try+ throw+]] [slingshot.slingshot :refer [try+ throw+]]
[clojure.edn :as edn] [clojure.edn :as edn]
@@ -42,7 +42,7 @@
(defn -main [& args] (defn -main [& args]
(let [initial-book empty-book (let [initial-book empty-book
incoming-order-channel (chan) incoming-order-channel (chan)
[trades-channel new-book-order-channel] (create-exchange-for-security-2 initial-book incoming-order-channel)] [trades-channel new-book-order-channel] (create-exchange-for-security initial-book incoming-order-channel)]
(go (print-chan "trade > " trades-channel)) (go (print-chan "trade > " trades-channel))
(go (print-chan "order > " new-book-order-channel)) (go (print-chan "order > " new-book-order-channel))
(loop [order (read-order)] (loop [order (read-order)]
+10 -12
View File
@@ -4,43 +4,41 @@
create-sell-book create-sell-book
match-order-in-book]] match-order-in-book]]
[book.util :refer :all] [book.util :refer :all]
[clojure.core.async :refer [chan go >!! <! <!! >! pub]])) [clojure.core.async :refer [chan go >! <! pub]]))
(def empty-book {:sell (create-sell-book) :buy (create-buy-book)}) (def empty-book {:sell (create-sell-book) :buy (create-buy-book)})
(defn process-abstract [order reference-book same-type-book] (defn process-abstract [order reference-book same-type-book]
(let [[trades new-reference-book leftover-order] (match-order-in-book reference-book order) (let [[trades new-reference-book leftover-order] (match-order-in-book reference-book order)
;ff (println ">>=" same-type-book (type same-type-book));;
;ff (println ">>=" leftover-order (type leftover-order))
new-same-type-book (if leftover-order (conj same-type-book leftover-order) same-type-book)] new-same-type-book (if leftover-order (conj same-type-book leftover-order) same-type-book)]
[new-reference-book new-same-type-book leftover-order trades])) [new-reference-book new-same-type-book leftover-order trades]))
(defn process-sell-order-2 [{sell-book :sell buy-book :buy} order] (defn process-sell-order [{sell-book :sell buy-book :buy} order]
(let [[new-buy-book new-sell-book new-order trades] (process-abstract order buy-book sell-book) (let [[new-buy-book new-sell-book new-order trades] (process-abstract order buy-book sell-book)
new-book {:sell new-sell-book :buy new-buy-book}] new-book {:sell new-sell-book :buy new-buy-book}]
[new-book new-order trades])) [new-book new-order trades]))
(defn process-buy-order-2 [{sell-book :sell buy-book :buy} order] (defn process-buy-order [{sell-book :sell buy-book :buy} order]
(let [[new-sell-book new-buy-book new-order trades] (process-abstract order sell-book buy-book) (let [[new-sell-book new-buy-book new-order trades] (process-abstract order sell-book buy-book)
new-book {:sell new-sell-book :buy new-buy-book}] new-book {:sell new-sell-book :buy new-buy-book}]
[new-book new-order trades])) [new-book new-order trades]))
(defn process-order-2 [book order] (defn process-order [book order]
(if (sell? order) (if (sell? order)
(process-sell-order-2 book order) (process-sell-order book order)
(process-buy-order-2 book order))) (process-buy-order book order)))
(defn process-orders-2 [initial-book incoming-order-channel] (defn process-orders [initial-book incoming-order-channel]
(let [trades-channel (chan) (let [trades-channel (chan)
new-book-order-channel (chan)] new-book-order-channel (chan)]
(go (loop [order (<! incoming-order-channel) book initial-book] (go (loop [order (<! incoming-order-channel) book initial-book]
(let [[new-book new-order new-trades] (process-order-2 book order)] (let [[new-book new-order new-trades] (process-order book order)]
(when (not (nil? new-order)) (>! new-book-order-channel new-order)) (when (not (nil? new-order)) (>! new-book-order-channel new-order))
(doseq [trade new-trades] (>! trades-channel trade)) (doseq [trade new-trades] (>! trades-channel trade))
(recur (<!! incoming-order-channel) new-book)))) (recur (<! incoming-order-channel) new-book))))
[(pub trades-channel :book.order/type) (pub new-book-order-channel :type)])) [(pub trades-channel :book.order/type) (pub new-book-order-channel :type)]))
(def create-exchange-for-security-2 process-orders-2) (def create-exchange-for-security process-orders)
+2 -2
View File
@@ -5,7 +5,7 @@
[compojure.handler :refer [api]] [compojure.handler :refer [api]]
[compojure.core :refer :all] [compojure.core :refer :all]
[book.order] ;; for spec side effect [book.order] ;; for spec side effect
[book.exchange :refer [create-exchange-for-security-2]] [book.exchange :refer [create-exchange-for-security]]
[book.rest.util :refer [build-response build-response-body]] [book.rest.util :refer [build-response build-response-body]]
[clojure.spec.alpha :as s] [clojure.spec.alpha :as s]
[slingshot.slingshot :refer [try+ throw+]] [slingshot.slingshot :refer [try+ throw+]]
@@ -33,7 +33,7 @@
(defn create-exchange-api-for [sec-id] (defn create-exchange-api-for [sec-id]
(let [initial-book empty-book (let [initial-book empty-book
incoming-order-channel (chan) incoming-order-channel (chan)
[trades-publisher new-book-order-publisher] (create-exchange-for-security-2 initial-book incoming-order-channel)] [trades-publisher new-book-order-publisher] (create-exchange-for-security initial-book incoming-order-channel)]
{:sec-id sec-id {:sec-id sec-id
:incoming-order-channel incoming-order-channel :incoming-order-channel incoming-order-channel
:trades-publisher trades-publisher :trades-publisher trades-publisher
+8 -8
View File
@@ -12,7 +12,7 @@
(let [book empty-book (let [book empty-book
order {:type :sell :quantity 10 :price 2 :book.order/id 1} order {:type :sell :quantity 10 :price 2 :book.order/id 1}
expt-new-sell-book [order] expt-new-sell-book [order]
[{new-sell-book :sell new-buy-book :buy} new-order new-trades] (process-sell-order-2 book order)] [{new-sell-book :sell new-buy-book :buy} new-order new-trades] (process-sell-order book order)]
new-sell-book => expt-new-sell-book new-sell-book => expt-new-sell-book
new-buy-book => empty? new-buy-book => empty?
new-order => order new-order => order
@@ -25,7 +25,7 @@
order {:type :sell :quantity 4 :price 2 :book.order/id 3} order {:type :sell :quantity 4 :price 2 :book.order/id 3}
expt-new-buy-book [{:price 3 :quantity 6 :type :buy :book.order/id 2}] expt-new-buy-book [{:price 3 :quantity 6 :type :buy :book.order/id 2}]
expt-new-trades [#:book.order{:book-id 2 :order-id 3 :price 3 :quantity 4 :type :buy}] expt-new-trades [#:book.order{:book-id 2 :order-id 3 :price 3 :quantity 4 :type :buy}]
[{new-sell-book :sell new-buy-book :buy} new-order new-trades] (process-order-2 book order)] [{new-sell-book :sell new-buy-book :buy} new-order new-trades] (process-order book order)]
new-sell-book => empty? new-sell-book => empty?
new-buy-book => expt-new-buy-book new-buy-book => expt-new-buy-book
new-order => nil? new-order => nil?
@@ -35,7 +35,7 @@
(let [book empty-book (let [book empty-book
order {:type :buy :quantity 10 :price 2 :book.order/id 1} order {:type :buy :quantity 10 :price 2 :book.order/id 1}
expt-new-sell-book [order] expt-new-sell-book [order]
[{new-sell-book :sell new-buy-book :buy} new-order new-trades] (process-order-2 book order)] [{new-sell-book :sell new-buy-book :buy} new-order new-trades] (process-order book order)]
new-sell-book => empty? new-sell-book => empty?
new-buy-book => expt-new-sell-book new-buy-book => expt-new-sell-book
new-order => order new-order => order
@@ -48,7 +48,7 @@
order {:type :buy :quantity 4 :price 4 :book.order/id 3} order {:type :buy :quantity 4 :price 4 :book.order/id 3}
expt-new-sell-book [{:price 3 :quantity 6 :type :sell :book.order/id 2}] expt-new-sell-book [{:price 3 :quantity 6 :type :sell :book.order/id 2}]
expt-new-trades [#:book.order{:book-id 2 :order-id 3 :price 3 :quantity 4 :type :sell}] expt-new-trades [#:book.order{:book-id 2 :order-id 3 :price 3 :quantity 4 :type :sell}]
[{new-sell-book :sell new-buy-book :buy} new-order new-trades] (process-order-2 book order)] [{new-sell-book :sell new-buy-book :buy} new-order new-trades] (process-order book order)]
new-sell-book => expt-new-sell-book new-sell-book => expt-new-sell-book
new-order => nil? new-order => nil?
new-trades => expt-new-trades)) new-trades => expt-new-trades))
@@ -61,10 +61,10 @@
order-4 {:type :sell :quantity 1 :price 102 :book.order/id 10} order-4 {:type :sell :quantity 1 :price 102 :book.order/id 10}
expt-book-4 {:buy [{:price 99 :quantity 8 :type :buy :book.order/id 8}] expt-book-4 {:buy [{:price 99 :quantity 8 :type :buy :book.order/id 8}]
:sell [{:price 102 :quantity 1 :type :sell :book.order/id 10}]} :sell [{:price 102 :quantity 1 :type :sell :book.order/id 10}]}
[book-1 _ _] (process-order-2 book order-1) [book-1 _ _] (process-order book order-1)
[book-2 _ _] (process-order-2 book-1 order-2) [book-2 _ _] (process-order book-1 order-2)
[book-3 _ _] (process-order-2 book-2 order-3) [book-3 _ _] (process-order book-2 order-3)
[book-4 _ _] (process-order-2 book-3 order-4)] [book-4 _ _] (process-order book-3 order-4)]
book-4 => expt-book-4))) book-4 => expt-book-4)))