Middleware now working. Bump to version 0.1.6

This commit is contained in:
mike-thompson-day8 2015-02-25 11:43:10 +11:00
parent 947de41d02
commit 474b2e4bac
4 changed files with 25 additions and 13 deletions

View File

@ -1,4 +1,4 @@
(defproject re-frame "0.1.5" (defproject re-frame "0.1.6"
:description "A reagent framework" :description "A reagent framework"
:url "https://github.com/Day8/re-frame.git" :url "https://github.com/Day8/re-frame.git"

View File

@ -2,9 +2,7 @@
(:refer-clojure :exclude [flush]) (:refer-clojure :exclude [flush])
(:require-macros [cljs.core.async.macros :refer [go-loop go]]) (:require-macros [cljs.core.async.macros :refer [go-loop go]])
(:require [reagent.core :refer [flush]] (:require [reagent.core :refer [flush]]
;[reagent.ratom :refer [IReactiveAtom]]
[re-frame.db :refer [app-db]] [re-frame.db :refer [app-db]]
; [re-frame.history :refer [store-now!]]
[re-frame.utils :refer [first-in-vector warn]] [re-frame.utils :refer [first-in-vector warn]]
[cljs.core.async :refer [chan put! <! timeout]])) [cljs.core.async :refer [chan put! <! timeout]]))
@ -15,11 +13,24 @@
(defn register (defn register
"register a handler for an event" "register a handler for an event"
[event-id handler-fn] ([event-id handler-fn]
(when (contains? @id->fn event-id) (when (contains? @id->fn event-id)
(warn "re-frame: overwriting an event-handler for: " event-id)) ;; allow it, but warn. (warn "re-frame: overwriting an event-handler for: " event-id)) ;; allow it, but warn.
(swap! id->fn assoc event-id handler-fn)) (swap! id->fn assoc event-id handler-fn))
([event-id middleware handler-fn]
(register event-id (middleware handler-fn))))
(defn register
"register a handler for an event"
([event-id handler-fn]
(when (contains? @id->fn event-id)
(warn "re-frame: overwriting an event-handler for: " event-id)) ;; allow it, but warn.
(swap! id->fn assoc event-id handler-fn))
([event-id middleware handler-fn]
(register event-id (middleware handler-fn))))
;; -- The Event Conveyor Belt -------------------------------------------------------------------- ;; -- The Event Conveyor Belt --------------------------------------------------------------------
;; ;;

View File

@ -1,6 +1,7 @@
(ns re-frame.middleware (ns re-frame.middleware
(:require [reagent.ratom :refer [IReactiveAtom]] (:require
[re-frame.history :refer [store-now!]])) [reagent.ratom :refer [IReactiveAtom]]
[re-frame.undo :refer [store-now!]]))
;; -- Middleware Factories ------------------------------------------------------------------------- ;; -- Middleware Factories -------------------------------------------------------------------------
;; ;;
@ -11,7 +12,7 @@
;; ;;
;; Use "comp" to compose middelware, like this: ;; Use "comp" to compose middelware, like this:
;; ;;
;; (def midware (comp undoable make-pure (validate some-fn))) ;; midware is a function ;; (def midware (comp undoable pure (validate some-fn))) ;; midware is a function
;; ;;
;; then imagine that we have a pure handler: ;; then imagine that we have a pure handler:
;; ;;
@ -23,7 +24,7 @@
;; ;;
;; (def h (midware my-handler)) ;; h is "my-handler" wrapped in middleware ;; (def h (midware my-handler)) ;; h is "my-handler" wrapped in middleware
;; ;;
;; now call h: ;; I could call h like this:
;; (h app-db [:some-key 23]) <---- h is a handler, just pass in 'db' and 'v' ;; (h app-db [:some-key 23]) <---- h is a handler, just pass in 'db' and 'v'
;; ;;
;; Which means, you could just register 'h' ;; Which means, you could just register 'h'
@ -47,7 +48,7 @@
(next-handler app-db event-vec))) (next-handler app-db event-vec)))
(defn make-pure (defn pure
"Middleware which allows you to write a pure handler. "Middleware which allows you to write a pure handler.
1. on the way through it extracts the value in the atom 1. on the way through it extracts the value in the atom
2. resets the atom with the returned value after calling the handler" 2. resets the atom with the returned value after calling the handler"

View File

@ -1,4 +1,4 @@
(ns re-frame.history (ns re-frame.undo
(:require-macros [reagent.ratom :refer [reaction]]) (:require-macros [reagent.ratom :refer [reaction]])
(:require (:require
[reagent.core :as reagent] [reagent.core :as reagent]