Skip to content

Instantly share code, notes, and snippets.

foo bar 123
@bterlson
bterlson / classy.js
Last active September 16, 2015 17:11
class A { }
class B extends A {
method() { super.x = 1; return super.x; }
}
var b = new B();
b.method(); // undefined (no property x on A.prototype or above)
b.hasOwnProperty('x'); // true (own property created on receiver by [[set]])
class C extends B {
get x() { return "gotten" }
@bterlson
bterlson / example.js
Created June 5, 2015 19:04
Async constructors?
async function Person() {
this.name = await getName();
}
// seems weird-ish.
var p = new Person();
p.then(person => console.log(person.name));
// but seems better in another async function
async function CreatePerson() {
@bterlson
bterlson / concat.js
Last active August 29, 2015 14:19
Chained tagged templates
function concat(head, template) {
"use strict";
var head;
if(!template) {
template = head;
head = '';
}
var fn = concat.bind(null, head + template[0]);
@bterlson
bterlson / oddlists
Created February 7, 2015 21:35
Copy the md syntax into the comment field, and hit preview.
1. L0
1. L1
1. L2
1. L2
1. L3
1. here
2. here
3. here
@bterlson
bterlson / stream-bifurcate.js
Created October 28, 2014 23:33
stream-bifurcate
var _ = require('highland');
var Readable = require('stream').Readable;
var Writable = require('stream').Writable;
var util = require('util');
util.inherits(Tributary, Writable);
function Tributary() {
Writable.call(this, { objectMode: true });
this.forks = [];
class A {
if (defineBar) {
bar => {
}
}
while(needsMoreMethods) {
// add more methods
}
class Cancellation extends Error { };
class CancellablePromise extends Promise {
constructor(resolver, onCancelled) {
this._onCancelled = onCancelled;
this._isResolved = false;
super((resolve, reject) => {
this._reject = reject;
const wrappedResolve = value => { resolve(value); this._isResolved = true; };
const wrappedReject = reason => { reject(reason); this._isResolved = true; };
@bterlson
bterlson / spec.html
Last active August 29, 2015 13:59
Canonical Spec Section
<es-intro>
<p>Introductory matter. Could probably be an intro attribute on clauses</p>
</es-intro>
<es-clause title="Greetings" anchor="sec-greetings">
<!-- anchor is optional, is calculated for you if you don't specify -->
<p>Clauses are normative and contain text...</p>
<es-clause title="sub-clause">
<p>When evaluating <es-nt>BindingElement</es-nt>, you better do it right!</p>
@bterlson
bterlson / Array.prototype.unshift
Last active August 29, 2015 13:58
Tweak unshift to only process elements when no arguments are passed (See new step 7). Note that all implementations still assign length when no arguments are passed.
1. Let O be the result of calling ToObject passing the this value as the argument.
2. ReturnIfAbrupt(O).
3. Let lenVal be the result of Get(O, "length")
4. Let len be ToLength(lenVal).
5. ReturnIfAbrupt(len).
6. Let argCount be the number of actual arguments.
7. If argCount > 0 then
a. Let k be len.
b. Repeat, while k > 0,
i. Let from be ToString(k–1).