Skip to content

Instantly share code, notes, and snippets.

View pleasetrythisathome's full-sized avatar

Scarlet Dame pleasetrythisathome

View GitHub Profile
@pleasetrythisathome
pleasetrythisathome / browser.cljs
Created October 7, 2014 19:00
clojurescript browser utils
(ns browser
(:require-macros [cljs.core.async.macros :refer [go go-loop]])
(:require [goog.events :as events]
[clojure.string :as str]
[cljs.core.async :refer [put! <! chan]])
(:import goog.History
goog.history.Html5History
goog.history.Html5History.TokenTransformer
goog.history.EventType))
@pleasetrythisathome
pleasetrythisathome / form.cljs
Last active May 7, 2016 05:45
om forms - form parent local state as cursor
(def inputs [{:korks :email}
{:korks [:name :first]}
{:korks [:name :last]}])
(defn form [app owner]
(reify
om/IInitState
(init-state [this]
(reduce (fn [state {:keys [korks]}]
(assoc-in state korks nil))
(ns populace.web.chsk
(:require #?@
(:clj
[[aleph.http :as http]
[bidi.bidi :refer (path-for RouteProvider tag)]
[bolt.authentication :refer :all]
[bolt.authentication.protocols :refer (RequestAuthenticator)]
[byte-streams :as bs]
[hara.event :refer :all]
[ring.middleware.transit :refer [encode decode]]
(ns populace.parser
(:refer-clojure :exclude [read])
(:require [populace.user :as user]
[om.next.impl.parser :as parser]
[#?(:clj juxt.datomic.extras
:cljs populace.utils.datascript)
:refer (DatomicConnection as-conn as-db to-ref-id to-entity-map)]
#?@(:clj
[[populace.auth.client :refer :all]
[populace.config :refer [config filter-cljs]]
@pleasetrythisathome
pleasetrythisathome / debounce.clj
Last active September 3, 2015 18:17
debounce an action on a channel for values that produce the same result of a key-fn
(defn debounce
"debounce an action on a channel for values that produce the same result of a key-fn"
([f input-ch wait] (debounce f input-ch wait identity))
([f input-ch wait key-fn]
;; keep a map of keys that have been triggered
(go-loop [debounced {}]
(let [[v c] (alts! (conj (vals debounced) input-ch))]
(if (= c input-ch)
(let [key (key-fn v)]
(if (get (into #{} (keys debounced)) key) ;; if our key is debounced
(defn markov-data
[words]
(->> words
(partition 2 1)
(reduce (fn [acc [w next-w]]
(update-in acc
[w next-w]
(fnil inc 0)))
{})))
@pleasetrythisathome
pleasetrythisathome / async_protocol.clj
Last active August 29, 2015 14:18
asynchronous "protocol" handshakes
(ns async-protocol
(:require [clojure.core.async :as async]
[clojure.set :as set]
[com.stuartsierra.component :as component :refer (Lifecycle)]
[taoensso.timbre :as log]))
(defn throw-err [e]
(when (instance? Throwable e) (throw e))
e)
@pleasetrythisathome
pleasetrythisathome / rum_cmp.cljs
Last active August 29, 2015 14:17
rum component system
(defprotocol IRender
(renderer [_])
(render-fn [_ views]))
(defprotocol IRumView
(display-name [_])
(state? [_])
(mixins [_]))
(defn rum-ctor [view]
@pleasetrythisathome
pleasetrythisathome / kargs.clj
Created March 13, 2015 17:59
variadic keyword args or map or no-args
(defn kargs
([] (kargs {}))
([a b & {:as r}]
(kargs (assoc r a b)))
([a] a))
(and (= (kargs :some 1 :me 2)
(kargs {:some 1 :me 2})
{:some 1 :me 2})
(= (kargs)
@pleasetrythisathome
pleasetrythisathome / clojure-repls.el
Created March 12, 2015 20:57
clojure-repls for component systems. automatically eval in correct buffer
;;; clojure-repls.el --- Assign repls for clj and cljs eval
;; Copyright (C) 2015 Dylan Butman
(require 'cider)
(require 'dash)
(defvar clojure-repls-clj-con-buf nil)
(defvar clojure-repls-cljs-con-buf nil)