Skip to content

Instantly share code, notes, and snippets.

// This is a quick example on how we could wait for real loaded state
// by monitoring traffic. If needed, traffic filtering could be added.
var dataByTabId = {}
function getDataByTabId (tabId) {
if (!dataByTabId[tabId]) {
dataByTabId[tabId] = {
reqCounter: 0,
callbacks: [],
'use strict';
const spawn = generatorFunction => function() {
const gen = generatorFunction.apply(this, arguments);
return new Promise(resolve => {
const handle = (it) => {
if (it.done) {
return it.value;
@rkatic
rkatic / shallowEquality.js
Last active November 10, 2015 22:33
shallow equality
/*eslint-env es6*/
const hasOwn = ({}).hasOwnProperty;
// Check if two objects are equal by comparing own enumerable properties.
const isEqualShallow = (a, b) => {
if (a === b) return true;
if (!a || !b) return false;
const akeys = Object.keys(a);
const bkeys = Object.keys(b);
@rkatic
rkatic / graph.py
Last active August 29, 2015 14:14
graph.py
def edgesFunc(G):
if callable(G):
return G
items = _itemsFunc(G)
return lambda v: items(G[v])
# (list of dictionaries)
def bgraph(x, dicttype=dict):
var asap = require("asap")
asap.sub = function (onerror) {
var parent = this;
var self = function (task) {
parent(function () {
try {
task();
@rkatic
rkatic / gist:5309285
Last active December 15, 2015 19:09
Some utility/example functions for sequential processing with Q.
function loop (fn, startValue) {
var deferred = Q.defer(),
finished = false;
function end (val) {
finished = true;
deferred.resolve(val);
}
// array already sorted!
function unique( array ) {
var j = 0,
i = 1,
l = array.length | 0;
while ( i < l && array[i-1] !== array[i] ) {
++i;
}
@rkatic
rkatic / later.js
Last active January 19, 2021 07:31
Cross-browser and optimized way to postpone a function execution to next "tick".
// Based on the Q.nextTick implementation https://github.com/kriskowal/q/pull/195.
var later = (function(){
var head = { task: void 0, next: null }, tail = head,
maxPendingTicks = 2, pendingTicks = 0, queuedTasks = 0, usedTicks = 0,
requestTick;
var onTick = function() {
--pendingTicks;
if ( ++usedTicks >= maxPendingTicks ) {
var formCheckedRadios = {};
function OldWebKitFakeRadio() {
this._name = "";
this._defaultChecked = false;
this._checked = false;
}
OldWebKitFakeRadio.prototype = {
get name() {
@rkatic
rkatic / nativeType.jquery.js
Created August 28, 2011 15:03
Object type inquiry enhancments via $.nativeType()
(function( jQuery, undefined ){
var toString = ({}).toString,
hasOwn = ({}).hasOwnProperty,
slice = [].slice,
push = [].push,
// [[Class]] --> type (for all natives)
class2type = {},