Skip to content

Instantly share code, notes, and snippets.

View dgraham's full-sized avatar
💭

David Graham dgraham

💭
View GitHub Profile
@dgraham
dgraham / gist:1260596
Created October 4, 2011 00:10
EM::PriorityQueue using RBTree
module EventMachine
class PriorityQueue < Queue
def initialize(&comparator)
super
@items = Items.new(comparator)
end
class Items
def initialize(comparator)
require 'rbtree'
@dgraham
dgraham / gist:2210713
Created March 26, 2012 23:41
Fibered Recursive Descent JSON Parser
#!/usr/bin/env ruby
require 'fiber'
# A resumable, recursive descent JSON parser, using Fibers.
# http://www.negativecode.com/posts/2012/03/26/fibers-resumable-recursive-descent-json-parsing/
class Parser
Result = Struct.new(:value)
def initialize
@dgraham
dgraham / gist:3750660
Created September 19, 2012 16:37
Hash -> Schema
require 'minitest/spec'
require 'minitest/autorun'
require 'set'
class Schemas
def initialize
@schemas = Set.new
end
def <<(hash)
@dgraham
dgraham / install-ruby
Last active May 6, 2019 01:45
Install Ruby 2.0 with ruby-build.
git clone https://github.com/sstephenson/ruby-build.git
cd ruby-build
sudo ./install.sh
sudo ruby-build 2.0.0-p247 /usr/local
cd .. && rm -rf ruby-build

Keybase proof

I hereby claim:

  • I am dgraham on github.
  • I am dgraham (https://keybase.io/dgraham) on keybase.
  • I have a public key whose fingerprint is 87B9 DDE7 41E3 D8B8 0DC7 F2E4 AA94 05DC E2E0 D208

To claim this, I am signing this object:

@dgraham
dgraham / template.js
Last active February 2, 2018 10:17
Minimum Viable Mustache
// $ traceur --experimental --out template-es6.js template.js
function escape(text) {
let el = document.createElement('p')
el.textContent = text
return el.innerHTML
}
function node(html) {
let parser = new DOMParser()
@dgraham
dgraham / fetch.js
Last active March 24, 2023 15:44
Simple window.fetch wrapper.
(function() {
function status(response) {
if (response.ok) {
return response
} else {
var error = new Error(response.statusText || response.status)
error.response = response
throw error
}
}
@dgraham
dgraham / anchor.js
Last active October 5, 2015 03:15
Simulate browsers' scroll-to-anchor behavior on page load.
(function() {
function hashchange() {
if (!location.hash) {
return;
}
// Don't do anything if the current target exists.
if (document.querySelector(":target")) {
return;
}
var name = "user-content-" + decodeURIComponent(location.hash.slice(1));
@dgraham
dgraham / make-icns
Created February 8, 2015 00:26
png -> icns
if [ $# -ne 1 ]; then
echo "Usage: make-icns icon.png"
exit 1
fi
IMAGE=$1
OUT=`basename ${IMAGE%\.*}`.iconset
mkdir $OUT
sizes=(16 32 128 256 512)
@dgraham
dgraham / copy-to-clipboard.js
Last active March 21, 2019 02:17
Copy attribute value, form input, or element text to the clipboard.
(function() {
function createNode(text) {
var node = document.createElement('pre');
node.style.width = '1px';
node.style.height = '1px';
node.style.position = 'fixed';
node.style.top = '5px';
node.textContent = text;
return node;
}