Skip to content

Instantly share code, notes, and snippets.

@rplevy
rplevy / edn2json.cljs
Last active February 23, 2018 01:06
edn->json command-line script + emacs interactive function interface
#!/usr/local/bin/planck
(ns scripts.edn2json
(:require [cljs.reader :as r]
[planck.core :refer [slurp *command-line-args* *in* line-seq]]))
(defn last-n-chars [n s]
(apply str (reverse (take n (reverse s)))))
(let [s (first *command-line-args*)
@rplevy
rplevy / bashrc-excerpt.el
Last active February 23, 2018 00:34
defshell, defshellonreg, defregexp
(defmacro defshell (name cmd)
`(defun ,name ()
(interactive)
(insert (shell-command-to-string ,cmd))))
(defmacro defshellonreg (name cmd &optional replace)
`(defun ,name (beg end)
(interactive "r")
(shell-command-on-region beg end ,cmd
(if ,replace (current-buffer) nil)
@rplevy
rplevy / htm2clj-region.el
Last active August 21, 2017 20:58
tool for generating (usually valid, or close to valid) sablono markup from raw html
(defun htm2clj-region (beg end)
(interactive "r")
(shell-command-on-region beg end
"html2clj"
(current-buffer)
t))
@rplevy
rplevy / xml->clj-region.el
Last active August 18, 2017 23:45
elisp wrapper on cljs script
(defun xml->clj-region (beg end)
(interactive "r")
(shell-command-on-region beg end
"xmlclj"
(current-buffer)
t))
# in my .bashrc
xmlclj() { planck -D funcool/tubax:0.2.0 -e "(require '[tubax.core :as tubax]) (require '[planck.core :refer [slurp]]) (require '[cljs.pprint :refer [pprint]])"'(pprint (tubax/xml->clj (slurp "'$1'")))'; }
# example: xmlclj /tmp/foo.xml
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
I verify that I am rplevy on mastodon.social
-----BEGIN PGP SIGNATURE-----
Version: Keybase OpenPGP v2.0.68
Comment: https://keybase.io/crypto
wsFcBAABCgAGBQJY4xcwAAoJEHPFfFFJo8mQ7LoQANVwr+sfT8tzZWCuyNsdLpsc
hPK3SmUTCLRYa/8Olvq2MO/ZWTyuHfhDiRWqmksSIdAoR5oyiz0RC4fCpuZY4QeZ
@rplevy
rplevy / aero-env.clj
Created June 15, 2016 00:47
integrate environ with aero
(defn keywordize [s]
(-> (str/lower-case s)
(str/replace "_" "-")
(str/replace "." "-")
(keyword)))
(defmethod aero/reader 'env
[opts tag value]
(get env (keywordize (str value))))
@rplevy
rplevy / example.clj
Last active June 11, 2016 05:13
temporal higher-order contract with clojure.spec
(require '[clojure.spec :as s])
(defn enforce [spec data-value]
(let [r (s/conform spec data-value)]
(if (= r :clojure.spec/invalid)
(throw (ex-info (str r) (s/explain-data spec data-value)))
data-value)))
(defn call-with-temporal-contract [f g contract-on-g]
(let [function-calls (atom [])]
Verifying that +rplevy is my blockchain ID. https://onename.com/rplevy
@rplevy
rplevy / vinepeek.clj
Last active December 11, 2015 21:19
A non-browser-based imitation of http://vinepeek.com (play random videos from http://vine.co) in 50 lines of Clojure in the REPL. Another way in which this is different from vinepeek.com is that it doesn't repeat videos that have already been viewed (unless you restart the process). Make sure to set video-player to a video-player application tha…
(require '[cemerick.pomegranate :refer [add-dependencies]])
(add-dependencies
:coordinates '[[clj-http "0.6.3"]
[swiss-arrows "0.5.1"]]
:repositories {"clojars" "http://clojars.org/repo"})
(require '[clj-http.client :as client]
'[swiss-arrows.core :refer [-<>]]
'[clojure.string :as str]
'[clojure.java.shell :refer [sh]])