Skip to content

Instantly share code, notes, and snippets.

@robozevel
robozevel / inheritance.js
Created July 7, 2012 11:02 — forked from gunderwonder/inheritance.js
A simple JavaScript inheritance system
/*
* A simple JavaScript inheritance system
* (Like Prototype's `Class.create()`, only without the crazy method wrapping and function decompilation)
*
* Usage
* var A = Class.create({
* // `$init` is the constructor
* $init: function(x, y) {
* this.x = x;
* this.y = y;
@robozevel
robozevel / jquery.autoResize.js
Created November 15, 2012 02:21
Auto-Resizing Textareas for jQuery
/**
* Auto-Resizing Textareas (jQuery v1.7+)
* Based on: http://phaistonian.pblogs.gr/expanding-textareas-the-easy-and-clean-way.html
*
* Usage:
* // Direct binding
* $("textarea").autoResize();
*
* // Delegated binding
* $.autoResize("textarea");
@robozevel
robozevel / underscore.signature.js
Created November 16, 2012 18:37
underscore.js mixin to create an arguments signature
/**
* underscore.js mixin to create an arguments signature
*
* Usage:
* switch(_.signature(arguments)) {
* case "*":
* ...
* case "object":
* case "object *":
* ...
@robozevel
robozevel / RegExp.Safe.js
Created November 25, 2012 00:15 — forked from nathansmith/escape_regex.js
Escape characters that could break regex.
(function(replace) {
var escape = [/[\-\[\]\/\\{}()*+?.^$|]/g, '\\$&'];
RegExp.Safe = function(pattern, flags) {
return new RegExp(replace.apply(String(pattern), escape), flags);
}
}(String.prototype.replace));
@robozevel
robozevel / underscore.ie.shim.js
Created December 13, 2012 00:50
IE7/8 JavaScript method shims using underscore.js
(function() {
function extendPrototype(Obj) {
return function(method, fn) {
if (!(method in Obj.prototype)) Obj.prototype[method] = _.isFunction(fn) ? fn : function() {
return _[method].apply(null, [this].concat(_.toArray(arguments)));
};
}
};
@robozevel
robozevel / deparam.js
Last active August 19, 2016 08:40 — forked from emilisto/deparam.js
// deparam
//
// Inverse of $.param()
//
// Taken from jquery-bbq by Ben Alman
// https://github.com/cowboy/jquery-bbq/blob/master/jquery.ba-bbq.js
var isArray = Array.isArray || function(obj) {
return Object.prototype.toString.call(obj) == '[object Array]';
};
@robozevel
robozevel / formatNumber.js
Created September 18, 2013 10:04
Unnecessarily clever number formatting function
// 1234567890 => "1,234,567,890"
function formatNumber(n) {
var a = [], s = String(n), i = l = s.length;
while (i--) a.push(s[i]), i && (l - i) % 3 === 0 && a.push(",");
return a.reverse().join("");
}
@robozevel
robozevel / ES5 Object.extend.js
Last active December 24, 2015 07:29 — forked from livingston/ES5 Extend & Clone Objects.js
ES5 Object.extend
Object.defineProperty(Object, "extend", {
enumerable: false,
value: function extend(obj) {
Array.prototype.slice.call(arguments, 1).forEach(function(current) {
Object.getOwnPropertyNames(current).forEach(function(key) {
Object.defineProperty(obj, key, Object.getOwnPropertyDescriptor(current, key));
});
});
return obj;
}
@robozevel
robozevel / encodeImage.js
Created January 21, 2014 11:25
Encode images to base64 using FileReader
var encodeImage = (function() {
var DEFAULT_IMAGE = 'data:image/png;base64,',
prefix = "_",
cache = {};
function encode(url, callback) {
var key = prefix + url, value = cache[key];
if (value) {
callback(value);
} else {
var shadowWrap = (function() {
var createShadowRoot = Element.prototype.createShadowRoot || Element.prototype.webkitCreateShadowRoot;
function createWrapper(content) {
var wrapper = document.createElement("shadow-wrap");
var shadowRoot = createShadowRoot.call(wrapper);
wrapper.resetStyleInheritance = true;
switch (typeof content) {
case "string":