Skip to content

Instantly share code, notes, and snippets.

View samuelcole's full-sized avatar

Sam Cole samuelcole

View GitHub Profile
@samuelcole
samuelcole / jquery.requires.js
Created March 9, 2010 18:48
$.requires function for loading external javascript requirements
window.requires_urls = {};
(function($){
$.requires = function(url, callback) {
// look for the url in our cached url results
for(called_url in window.requires_urls) {
var cached = window.requires_urls[called_url].cached;
// if a url matches and it has cached results
if(url_equals(url, called_url) && cached.data) {
@samuelcole
samuelcole / bootstrap_getScript.js
Created April 13, 2010 15:50
zero dependency $.getScript for loading large external javascripts
// zero dependency $.getScript for loading external javascript (like jQuery.js
// or other big libraries) in a way that does not block the normal page load
// (http://www.yuiblog.com/blog/2008/07/22/non-blocking-scripts/).
//
// heavily influenced by/copied from jQuery's ajax functions (http://jquery.com)
window.$ = {
getScript: function(script_src, callback) {
var done = false;
var head = document.getElementsByTagName("head")[0] || document.documentElement;
@samuelcole
samuelcole / match_protocol.js
Created December 13, 2010 23:51
A little function that accepts a url, and returns a url that matches the current protocol.
window.match_protocol = function(url) {
var RE_PROTO = /^\w+:\/\//;
if(RE_PROTO.test(url)) {
var protocol = window.location.protocol;
url = url.replace(RE_PROTO, protocol + "//");
}
return url;
};
@samuelcole
samuelcole / jquery.validate.js
Created January 4, 2011 21:03
Determines validity by running through an array of functions in the data object.
// Checks if a DOM object is valid.
// Expects an array of functions in data('validations') that return true when
// valid.
//
// Triggers field_invalid or field_valid.
// Calls options.invalid() or options.valid().
$.fn.validate = function(options) {
var $this = $(this);
/* $this.data('validations') is an array of functions, each of which
@samuelcole
samuelcole / ultimate_url_re.js
Created April 14, 2011 19:44
Ultimate Url Regex!
/*
Based off of Gruber's awesome url regex: http://daringfireball.net/2010/07/improved_regex_for_matching_urls
In addition:
- Should match 'example.com', 'google.net', 'google.org'. (only com, net, and org are whitelisted).
- Should not match 'sam@samuelcole.name'.
*/
var URL_RE = /(?:(?=[\s`!()\[\]{};:'".,<>?«»“”‘’])|\b)((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/|[a-z0-9.\-]+[.](?:com|org|net))(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))*(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]|\b))/gi
@samuelcole
samuelcole / storage_polyfill.js
Created June 7, 2011 21:24 — forked from remy/gist:350433
Storage polyfill
/*
Storage Polyfill by Remy Sharp.
Delinted by Samuel Cole.
*/
if (typeof window.localStorage === 'undefined' || typeof window.sessionStorage === 'undefined') {
(function () {
var Storage = function (type) {
function createCookie(name, value, days) {
@samuelcole
samuelcole / jquery.preload_background_image.js
Created March 23, 2012 21:06
A little plugin for preloading background images (for spinners 'n stuff).
(function ($) {
function background_image_url($object) {
var string = $object.css('backgroundImage'),
url_regex = /[("]([^()"]+)[")]/;
return url_regex.exec(string)[1];
}
$.fn.preload_background_image = function () {
return $(this).each(function () {
(new Image()).src = background_image_url($(this));
function Model(object) {
this.initialize(object);
}
Model.prototype.initialize = function (object) {
this.listeners = {};
this.listeners._global = [];
for (var key in object) {
if (object.hasOwnProperty(key)) {
this.set(key, object[key]);
<!DOCTYPE html>
<html>
<head>
<title>TIC TAC TOE</title>
<style>
td {
height: 100px;
width: 100px;
border-color: black;
border-width: 1px;
@samuelcole
samuelcole / index.js
Created November 22, 2013 19:49
requirebin sketch
// require something
var hogan = require('hogan.js');
var handlebars = require('handlebars');
var template = 'Hello {{name}}';
console.log(hogan.compile(template));
console.log(handlebars.compile(template));