Skip to content

Instantly share code, notes, and snippets.

@qbg
qbg / core.clj
Last active August 29, 2015 13:56
Potential dom/input weirdness in Om 0.5.0
(ns test.core
(:require [om.core :as om :include-macros true]
[om.dom :as dom :include-macros true]))
(enable-console-print!)
(def app-state (atom {:a 1}))
(defn demo
[app owner]
@qbg
qbg / core.cljs
Created February 27, 2014 18:09
Breaking React change
(ns om-tut.core
(:require [om.core :as om :include-macros true]
[om.dom :as dom :include-macros true]))
(enable-console-print!)
(def app-state (atom {:text "Works", :data {:text "Doesn't"}}))
(defn liker
[data owner]
@qbg
qbg / core.cljs
Last active August 29, 2015 13:56
Editing weirdness
(ns om-tut.core
(:require [om.core :as om :include-macros true]
[om.dom :as dom :include-macros true]))
(enable-console-print!)
(def app-state (atom {:text "Works", :data [{:text "Doesn't"}]}))
(defn handle-change
[e data edit-key owner]
@qbg
qbg / gist:1343409
Created November 6, 2011 20:16
HTML generation in CoffeeScript?
d 'html' ->
d 'head' ->
d 'title' ->
d.text 'Hello, world!'
d 'body' ->
d 'p' ->
d.text 'Hello, world!'
@qbg
qbg / gist:1289728
Created October 15, 2011 15:45
DOM style streaming XML gist
The entire library is contained in the class XMLWriter.
== USAGE ==
Say we wanted to produce the following XML:
========
<?xml version="1.0" encoding="UTF-8"?>
<compiler-settings>
<speed>3</speed>
<safety>0</safety>
<debug foo="bar">0</debug>
@qbg
qbg / gist:817563
Created February 8, 2011 23:54 — forked from lfborjas/gist:817504
#ruby
[1,2,3,4].select{ |x| x.even? }
#python
[x for x in [1,2,3,4] if not x%2]
#or, more norvingly
filter(lambda x: not x%2, [1,2,3,4])
#clojure
(filter even? [1 2 3 4])
@qbg
qbg / defn.clj
Created December 28, 2010 23:13
;;; Almost complete opinionated defn implementation
;;; Does not put the arg vector on the metadata
(defsyntax-class distinct-argument-vector []
"distinct argument vector"
[]
[var ...]
:fail-when (check-duplicate (syntax (var ...))) "duplicate binding form")
(defsyntax-class docstring []
"docstring"
(defn merge-colls
[input]
(lazy-seq
(let [biggest (first (apply max-key #(first (second %)) input))
new-input (update-in input [biggest] next)]
(cons biggest (merge-colls new-input)))))
(defsyntax-rules plet
(plet [& var rhs] & body)
((fn [& var] & body) & rhs))
(plet [a 1 b 2] (+ a b)) ;=> 3
;;; Implementation of defsyntax-rules
; Using defmacro:
(defmacro defsyntax-rules
[name & rt-pairs]
@qbg
qbg / gist:640760
Created October 22, 2010 15:29
Primitive fn error
user=> (import 'java.util.ArrayList)
java.util.ArrayList
user=> (defn foo ^ArrayList [^double n] (doto (ArrayList.) (.add (* n 2))))
#'user/foo
user=> (defn bar [x] (let [al (foo x)] (+ x (.get al 0))))
#'user/bar
user=> (bar 5)
AbstractMethodError user$foo.invokePrim(D)Ljava/lang/Object; user/bar (NO_SOURCE_FILE:5)