Skip to content

Instantly share code, notes, and snippets.

View tobie's full-sized avatar

Tobie Langel tobie

View GitHub Profile
tobie /
Created July 20, 2018 05:39 — forked from calebamiles/
Notes on Open Source Governance Models

Node.js Foundation

  • Healthy Open Source
    • explicit goal to be a lightweight process
    • concrete ability to scale to hundreds of contributors
    • good fundamental goals
      • transparency
      • participation
      • efficacy
    • ecosystem projects encouraged but not required to adopt foundation governance templates
  • creation of projects under TSC explicity delegates authority from TSC to project TC
const Grammar = require('syntax-cli').Grammar;
const LLParsingTable = require('syntax-cli').LLParsingTable;
const jsdom = require("jsdom");
function getRulesFromDOM(window) {
let rules = window.document.querySelectorAll("pre.grammar[id]");
return [], pre => pre.textContent);
const REGEXP = /(\s*:\n\s*)|\b(integer|float|identifier|string|whitespace|comment|other)\b|(\s*\n\s*)|(ε)/g;
interface WindowSessionStorage {
readonly attribute Storage sessionStorage;
Window implements WindowSessionStorage;
[NoInterfaceObject, Exposed=(Window,Worker)] // seems redundant
interface GlobalCrypto {
[Throws] readonly attribute Crypto crypto;
Window implements GlobalCrypto;
WorkerGlobalScope implements GlobalCrypto;
tobie / Inheriting "Mixins"
Last active August 29, 2017 22:24
WebIDL Mixins
# Here we're looking for NoInterfaceObjects that have a base class.
# Luckily the only one we could find is not used as a mixin.
# awk '/NoInterfaceObject/,/};/' *.webidl | grep -o "interface .*:.* {" | cut -d" " -f4 | sort -u
function traverse_inherited_and_consequential_interfaces(stack, callback) {
var I = stack.pop();
I.array["implements"][].forEach(id => {
var mixin = I.array.members[id];
if (!mixin) {
throw new Error("Interface " + id + " not found (implemented by " + + ")");
var interfaces = mixin.get_inheritance_stack();
traverse_inherited_and_consequential_interfaces(interfaces, callback);
parsed_idl.members.forEach(function(member) {
new IdlInterfaceMember(member)
<h4 id="legacy-callback-interface-object">Legacy callback interface object</h4>
The [=legacy callback interface object=] for a given [=callback interface=]
is a [=function object=].
It has properties that correspond to the [=constants=] defined on that interface,
as described in sections [[#es-constants]].
Note: Since an interface object is a [=function object=]
the <code>typeof</code> operator will return "function"
when applied to a [=legacy callback interface object=].
<div algorithm>
To compute the <dfn lt="IntegerPart">integer part</dfn> of an ECMAScript number |n|,
the following steps must be taken:
1. Let |r| be [=floor=]([=abs=](|n|))
1. If |n| &lt; 0,
then return -1 * |r|.
1. Otherwise return |r|.
This comment and the below content is programatically generated.
You may add a comma-separated list of anchors you'd like a
direct link to below (e.g. #idl-serializers, #idl-sequence):
Don't remove this comment or modify anything below this line.