Skip to content

Instantly share code, notes, and snippets.

@tiye
Forked from cemerick/defonce.clj
Created July 25, 2016 04:19
Show Gist options
  • Save tiye/d8ed278a5e637954962e0955b8be5d38 to your computer and use it in GitHub Desktop.
Save tiye/d8ed278a5e637954962e0955b8be5d38 to your computer and use it in GitHub Desktop.
`defonce` for ClojureScript
(ns whatever.cljs
(:require [cljs.compiler :refer (munge)])
(:refer-clojure :exclude (munge defonce)))
(defmacro defonce
[vname expr]
(let [ns (-> &env :ns :name name munge)
mname (munge (str vname))]
`(when-not (.hasOwnProperty ~(symbol "js" ns) ~mname)
(def ~vname ~expr))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment