Skip to content

Instantly share code, notes, and snippets.

@datchley
datchley / cprop.jquery.js
Last active August 29, 2015 14:07
Class-like properties on elements in jQuery
!function (factory) {
if (typeof exports == 'object') {
factory(require('jquery'));
} else if (typeof define == 'function' && define.amd) {
define(['jquery'], factory);
} else {
factory(jQuery);
}
}(function($) {
'use strict';
@datchley
datchley / moveto.html
Last active August 29, 2015 14:07
jQuery extension - $.moveTo() and a `DOMChanged` event implementation
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.moveable {
border: 1px solid red;
display: inline-block;
padding: 2px;
font-family: sans-serif;
}
@datchley
datchley / escape-utils.js
Last active August 29, 2015 14:07
Javascript string escape utilities
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define([], factory);
} else if (typeof exports === 'object') {
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory();
} else {
@datchley
datchley / object-elevator.js
Last active August 29, 2015 14:11
Simple, single elevator implementation in javascript
function extend(/* objects */) {
var args = [].slice.call(arguments,0),
base = args.shift(),
len = args.length;
while (args.length) {
var o = args.pop();
for (var prop in o) {
// properties override those existing
if (typeof base[prop] === 'undefined' && typeof o[prop] !== 'function') {
base[prop] = o[prop];
@datchley
datchley / asyn-sequence.js
Last active August 29, 2015 14:11
A rudimentary, asychronous ES5 generator using Promises
/**
* Return a random number between min/max where the mean
* result is approximately the mode across a uniform distribution.
* @param min {Number} - lower limit of range (inclusive)
* @param max {Number} - upper limit of range (inclusive)
* @return {Function} - a function that returns a random number between 'min' and 'max'
*/
var genRandomFromRangeFn = function(min, max) {
return function() {
var res = Math.round(Math.random() * (max - min)) + min;
@datchley
datchley / combinators.js
Last active August 29, 2015 14:13
Functional Programming Concepts - Javascript
var slice = Array.prototype.slice,
join = Array.prototype.join,
concat = Array.prototype.concat,
toString = Object.prototype.toString,
isString = function(o){ return toString.call(o) == '[object String]'; },
isArray = function(o) { return toString.call(o) == '[object Array]'; };
// I Combinator
@datchley
datchley / README.md
Last active March 23, 2019 21:00
Micro templating library for javascript

Micro-Template: README.md

Valid template expressions:

  • expressions can reference any property on the passed in context, including nested properties and indexed access to array properties.
     {{ name }}
 {{ obj.name }}
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="http://code.jquery.com/jquery.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="http://code.jquery.com/jquery.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
@datchley
datchley / skittles.js
Created May 16, 2015 02:56
Various logic/programming challenges I've seen in interviews...
var assert = {
test: 1,
equal: function(exp, target) {
console.log("[test](%d) expected "+target+" got " + exp + " (%s)", this.test++, (exp == target ? 'SUCCESS' : 'FAIL'));
}
};
// SKITTLES
// Given a target goal in kilograms, and a number of
// small bags of skittles (1kg) and large bags of skittles (5kg)