Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@datchley
datchley / es6-eventemitter.js
Last active June 7, 2021 03:40
A straight forward EventEmitter implemented in Javascript using ES6
let isFunction = function(obj) {
return typeof obj == 'function' || false;
};
class EventEmitter {
constructor() {
this.listeners = new Map();
}
addListener(label, callback) {
this.listeners.has(label) || this.listeners.set(label, []);
@datchley
datchley / combine.js
Last active August 29, 2015 14:27
Idea for a combine(list, list) function for javascript in functional style
['Function','Array'].forEach(function(type) {
var checkFn = 'is'+type;
window[checkFn] = function(o){ return Object.prototype.toString.call(o) == '[object ' + type + ']'; };
});
// Return new list as combination of the two lists passed
// The second list can be a function which will be passed each item
// from the first list and should return an array to permute that item
// with. If either argument is not a list, it will be treated as a list.
//
@datchley
datchley / exercise.js
Last active August 29, 2015 14:27
Simple Functional/Pure Programming Exercise for UI Meetup (Bullhorn)
//
// This is the actual implementation using our minimal functional library
//
var validate = {
'values': function(o) { return !isNull(o) && !isUndefined(o) && (isBoolean(o) || isNumber(o) || isString(o)); },
'arrays': function(o) { return !isNull(o) && !isUndefined(o) && isArray(o); }
}
var build = {
'values': function(prop, val) { return [prop,"=",qs(val.toString())].join(''); },
@datchley
datchley / app.js
Last active September 20, 2022 01:22
"Getting Functional with Javascript" Blog post source files
/**
* Primary application logic for our Functional Programming blog example
* See related blog series at: http://www.datchley.name/tag/functional-programming/
* Version: 2.0
*/
// A simple, resuable comparison for '>='
function greaterThanOrEqual(a, b) {
return a >= b
}
@datchley
datchley / useWith.js
Last active August 29, 2015 14:26
A decorator for modifying a function to lift functions to work with different types of arguments
//
// Some common utility combinators and helpers
//
function flip(fn) {
return function() {
var args = [].slice.call(arguments);
return fn.apply(this, args.reverse());
};
}
@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)
<!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 / 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 }}
@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