Commits

Brian McKenna committed 1a8065f

Initial commit

Comments (0)

Files changed (4)

+<!doctype html>
+<html>
+  <head>
+    <title>CPS transform</title>
+    <style>
+      .print {
+        background: #CCC;
+      }
+    </style>
+  </head>
+  <body>
+    <pre id="output"></pre>
+    <script src="out/goog/base.js"></script>
+    <script src="out/cps.js"></script>
+    <script>
+      goog.require('puffnfresh.core');
+    </script>
+  </body>
+</html>

src/puffnfresh/core.cljs

+(ns puffnfresh.core
+  (:require [goog.Timer :as timer]
+            [goog.dom :as dom])
+  (:require-macros [puffnfresh.timeout :as timeout]))
+
+(def output (dom/getElement "output"))
+
+(defn p [text]
+  (dom/append output (dom/createDom "span" (.strobj {"class" "print"}) text)))
+
+(defn pn [text]
+  (p (str text "\n")))
+
+(timeout/timeout-macro
+   (pn "Hello")
+   (pn "World")
+   (p "Hello")
+   (p " ")
+   (p "world")
+   (p "!")
+   (p "!")
+   (pn "!")
+   (pn (+ 1 2 3))
+   (pn "Done"))

src/puffnfresh/timeout.clj

+(ns puffnfresh.timeout)
+
+(defmacro timeout-macro [& body]
+  (reduce
+   (fn [x y]
+     `(timer/callOnce (fn [] ~x ~y) 1000))
+   `(fn [])
+   (reverse body)))