Skip to content

Instantly share code, notes, and snippets.

@jayeb
jayeb / chain_promises.js
Created January 9, 2019 04:17
_.chainPromises()
_.mixin({
chainPromises: function (collection, mapper) {
return _.reduce(collection, function chainPromise(previousPromise, value, key) {
return previousPromise.then(mapper.bind(null, value, key));
}, Promise.resolve());
}
});

Keybase proof

I hereby claim:

  • I am jayeb on github.
  • I am jayeb (https://keybase.io/jayeb) on keybase.
  • I have a public key ASCvyJqeDp8-CdFWIe2Q5Ua5ByKrqqZfCOWwDbIquRTFDgo

To claim this, I am signing this object:

@jayeb
jayeb / preload.js
Last active January 26, 2018 20:47
function preload(imageURL) {
return new Promise(function (resolve, reject) {
var img = new Image(),
onLoad,
onError;
function cleanUp() {
img.removeEventListener('load', onLoad);
img.removeEventListener('error', onError);
}
@jayeb
jayeb / jquery-deparam.js
Created April 24, 2015 17:56
`$.deparam` method, borrowed from Ben Alman's jQuery BBQ plugin
// jQuery deparam
// borrowed from jQuery BBQ: Back Button & Query Library - v1.3pre - 8/26/2010
// http://benalman.com/
// Copyright (c) 2010 Ben Alman; Licensed MIT, GPL
(function($, decode) {
$.deparam = function( params, coerce ) {
var obj = {},
coerce_types = { 'true': !0, 'false': !1, 'null': null };
// Iterate over all name=value pairs.
@jayeb
jayeb / gist:c63b5f15bbd224e52b25
Created October 1, 2014 18:24
Google Play Music: Jump to random album
(function() {
var w = window,
getRandomAlbum = function() {
var albums, r, rAlbum;
if (w.location.hash == '#/albums') {
albums = document.querySelectorAll('div[data-type="album"]');
r = Math.random();
rAlbum = albums[Math.floor(r * albums.length)];
w.removeEventListener('hashchange', getRandomAlbum, false);
w.location.hash = '/album/' + rAlbum.dataset.id;
@jayeb
jayeb / jquery.mustache.js
Last active August 29, 2015 14:04
Simple jQuery plugin for easily making Mustache templates out of DOM elements
(function($, Mustache) {
$.fn.mustache = function(data, partials, stream) {
return $(this).map(function() {
var template = $.trim(this.innerHTML);
return Mustache.render(template, data, partials, stream);
});
}
})(jQuery, Mustache);
@jayeb
jayeb / jquery.deferredfollow.js
Created July 25, 2014 19:11
jQuery plugin to add a `.follow()` function to Deferred objects.
(function($) {
var originalDeferred = $.Deferred;
$.extend({
Deferred: function() {
return $.extend({
follow: function(leader) {
var follower = this;
if (!!leader && leader.promise) {
@jayeb
jayeb / Modernizr CSS image-set test .js
Created April 9, 2013 19:24
Code for testing CSS image-set support for Modernizr
(function(Modernizr) {
var win = window;
function _finish(result) {
Modernizr.addTest("cssimageset", result);
}
if (win.getComputedStyle) {
Modernizr.testStyles(
"#modernizr{background-image:"+Modernizr._prefixes.join("image-set:(url(//) 1x, url(//) 2x);background-image:").slice(0,-17)+"}",
@jayeb
jayeb / jquery.transitionduration.js
Created March 3, 2013 22:08
jQuery plugin for easily parsing an element's CSS transition duration
(function($){
$.fn.transitionDuration = function() {
var d = $(this).css("transitionDuration") || "0s";
return (parseFloat(d) * (/ms/.test(d)?1:1000)).toFixed(0);
}
})(jQuery);
@jayeb
jayeb / Modernizr Pseudo-element CSS-Transition test .js
Last active December 14, 2015 11:19 — forked from dieseltravis/jQuery version.js
Code for testing css-transition support on pseudo-elements for Modernizr. Forked from diseltravis's Gist: https://gist.github.com/dieseltravis/3908275 With improvements borrowed from Ryan Seddon's JSFiddle: http://jsfiddle.net/ryanseddon/vLdUq/2/
(function(Modernizr) {
var win = window,
transitionTo = "999px";
function _finish(result) {
Modernizr.addTest("csstransitionspseudos", result);
}
if (Modernizr.csstransitions && win.getComputedStyle) {
Modernizr.testStyles(