From b1df0d0ee7612a023df16d60b2916ecb9d8f0a77 Mon Sep 17 00:00:00 2001 From: oakes Date: Tue, 22 Apr 2014 13:56:12 -0400 Subject: [PATCH] Clean up screen function execution code --- src/play_clj/core.clj | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/play_clj/core.clj b/src/play_clj/core.clj index 542bf97..e154612 100644 --- a/src/play_clj/core.clj +++ b/src/play_clj/core.clj @@ -43,6 +43,14 @@ (when (not= e-old e-new) (compare-and-set! e-atom e-old e-new))) +(defn ^:private normalize + [entities] + (some->> entities + list + flatten + (remove nil?) + vec)) + (defn ^:private wrapper [screen screen-fn] (screen-fn)) @@ -53,13 +61,10 @@ :as options}] (let [execute-fn! (fn [func & {:keys [] :as options}] (when func - (let [old-entities @entities] - (some->> #(some->> (func (merge @screen options) - old-entities) - list - flatten - (remove nil?) - vec) + (let [screen-map (merge @screen options) + old-entities @entities] + (some->> (fn [] + (normalize (func screen-map old-entities))) (wrapper screen) (reset-changed! entities old-entities)))))] ; update screen when either the screen or entities are changed