Skip to content

Instantly share code, notes, and snippets.

View shawndumas's full-sized avatar

Shawn Dumas shawndumas

  • UX Engineer
  • Menlo Park, CA
View GitHub Profile
@shawndumas
shawndumas / range.js
Last active August 29, 2015 13:56
Stupid Hack for a Range Function
var range = function (from, to) {
if (arguments.length === 1) { to = from; }
var a = new Array(to + 1).join(0).split(0).map(function (v, i) { return i; });
if (from !== to) { a = a.slice(from, a.length); }
return a;
};
@shawndumas
shawndumas / IsBalanced.js
Last active October 7, 2015 16:19
IsBalanced
const isBalanced = (s, open, close) => {
return !!(
s.split('').reduce((p, c, i) => {
if (c === close && i === 0 || p === false) { p = false; }
else if (c === open ) { p += -1; }
else if (c === close) { p += 1; }
return p;
}, 0)
);
};
@shawndumas
shawndumas / contains.js
Created February 9, 2014 05:32
Contains
!!(~('xxxXXXxxx').indexOf('xxx'));
@shawndumas
shawndumas / spawn.js
Created March 27, 2014 18:04
ES6 Spawn
var spawn = function (generatorFn) {
var continuer = function (verb, arg) {
var r;
try {
r = generator[verb](arg);
} catch (error) {
return Promise.reject(error);
}

Keybase proof

I hereby claim:

  • I am shawndumas on github.
  • I am shawndumas (https://keybase.io/shawndumas) on keybase.
  • I have a public key whose fingerprint is 52D9 9BC6 417C D7BD F1AC AA5D 4DEF 01E1 B398 982C

To claim this, I am signing this object:

@shawndumas
shawndumas / requiredParam.js
Created May 8, 2014 17:49
ES6 -- Required Parameter
var throwMissinParamError = function () {
throw new Error('Missing parameter');
},
requiredParamFn = function (requiredParam = throwMissinParamError()) {
// use required parameter
return requiredParam;
};
(new Array(101)).join(0).split(0).map(function (v, i) {
var r = '';
i += 1;
(i%3 < 1) && (r += 'Fizz');
(i%5 < 1) && (r += 'Buzz');
!r && (r = i);
return r;
}).join('\n');
@shawndumas
shawndumas / rhel-install.sh
Last active August 29, 2015 14:09
Git/Vim on RHEL
cd ~
wget http://ftp.gnu.org/gnu/stow/stow-latest.tar.gz
tar -xf stow-latest.tar.gz
cd ~/stow-latest
./configure && make && sudo make install
cd ~
wget https://www.kernel.org/pub/software/scm/git/git-2.1.3.tar.xz
tar -xf git-2.1.3.tar.xz
cd ~/git-2.1.3
./configure && make && sudo make install
var template = function (str, options) {
var re = /{{(.+?)}}/g,
reExp = /(^( )?(var|if|for|else|switch|case|break|{|}|;))(.*)?/g,
code = 'with(obj) { var r=[];\n',
cursor = 0,
result,
add = function (line, js) {
js ? (code += line.match(reExp) ? line + '\n' : 'r.push(' + line + ');\n') :
(code += line != '' ? 'r.push("' + line.replace(/"/g, '\\"') + '");\n' : '');
@shawndumas
shawndumas / partialApplication.js
Last active August 29, 2015 14:09
Partial Application with Substitution
var partial = function () {
var toArray = function (a) { return [].slice.call(a); },
appliedArgs = toArray(arguments),
fn = appliedArgs.shift(),
placeholderPositions = appliedArgs.map(function (e, i) {
if (e === '_') { return i; }
}).join('').split('');
return function () {
var args = toArray(arguments);