From 905410262e54a30c7dd73b9f242a2c673c609e7b Mon Sep 17 00:00:00 2001 From: Dylan Butman Date: Fri, 12 Dec 2014 13:33:49 -0500 Subject: [PATCH] core -> transition --- dev/dev.clj | 4 +-- src/bardo/interpolate.cljx | 36 ++++++++++++++++-------- src/bardo/{core.cljx => transition.cljx} | 2 +- 3 files changed, 27 insertions(+), 15 deletions(-) rename src/bardo/{core.cljx => transition.cljx} (99%) diff --git a/dev/dev.clj b/dev/dev.clj index b460d94..f17a083 100644 --- a/dev/dev.clj +++ b/dev/dev.clj @@ -6,8 +6,8 @@ [clojure.test :as test] [clojure.tools.namespace.repl :refer [refresh refresh-all]] - [bardo.core :refer :all] - [bardo.ease :refer :all] + [bardo.transition :refer :all] + [bardo.ease :as ease] [bardo.interpolate :refer :all])) (defn reset [] diff --git a/src/bardo/interpolate.cljx b/src/bardo/interpolate.cljx index bfb634d..0c3f3a8 100644 --- a/src/bardo/interpolate.cljx +++ b/src/bardo/interpolate.cljx @@ -2,7 +2,10 @@ #+cljs (:require-macros [cljs.core.match.macros :refer [match]]) (:require [clojure.set :refer [union]] #+clj [clojure.core.match :refer [match]] - #+cljs [cljs.core.match])) + ;;#+cljs [clojure.test :refer [function?]] + #+cljs [cljs.core.match] + ;;#+cljs [cemerick.cljs.test :refer [function?]] + )) ;; a protocol for birthing new values from nil (defprotocol IFresh @@ -42,6 +45,7 @@ [start end] [start end])) (defn wrap-infinite [x y] + ;;(println :wrap-infinite [x y]) (if (every? sequential? [x y]) (match (mapv counted? [x y]) [false false] (throw @@ -91,8 +95,8 @@ (match [t v] [0 (_ :guard hash-map?)] (select-keys v (keys start)) [1 (_ :guard hash-map?)] (select-keys v (keys end)) - [0 (_ :guard sequential?)] (take (count start) v) - [1 (_ :guard sequential?)] (take (count end) v) + [0 (_ :guard sequential?)] (into '() (take (count start) v)) + [1 (_ :guard sequential?)] (into '() (take (count end) v)) [_ _] v)))))) (declare interpolate) @@ -111,7 +115,7 @@ #+cljs List (-interpolate [start end] (fn [t] - (seq (for [k (range (Math/max (count start) + (into '() (for [k (range (Math/max (count start) (count end)))] (->> [(nth start k nil) (nth end k nil)] (apply wrap-nil) @@ -122,14 +126,14 @@ #+cljs PersistentArrayMap (-interpolate [start end] (fn [t] - (into {} (for [k (->> [start end] - (map keys) - (map set) - (apply union))] - [k (->> [start end] - (map k) - (apply interpolate) - (#(% t)))]))))) + (seq (for [k (->> [start end] + (map keys) + (map set) + (apply union))] + [k (->> [start end] + (map k) + (apply interpolate) + (#(% t)))]))))) (defn interpolate [start end] (let [wrapped (some->> [start end] @@ -142,3 +146,11 @@ (do (throw (#+cljs js/Exception #+clj Exception. (str "Cannot interpolate between " start " and " end)))))))) + +(defn comp-interpolate + [start end] + (fn [t] + ((interpolate (start t) (end t)) t))) + +((comp-interpolate (interpolate [1 2] [3 4]) + (interpolate [1 2] [5 6])) 1) diff --git a/src/bardo/core.cljx b/src/bardo/transition.cljx similarity index 99% rename from src/bardo/core.cljx rename to src/bardo/transition.cljx index 3264dba..2ccb309 100644 --- a/src/bardo/core.cljx +++ b/src/bardo/transition.cljx @@ -1,4 +1,4 @@ -(ns bardo.core +(ns bardo.transition #+cljs (:require-macros [cljs.core.async.macros :refer [go go-loop]]) (:require [bardo.ease :refer [ease]]