Skip to content

Instantly share code, notes, and snippets.

View clohr's full-sized avatar

Christian Lohr clohr

View GitHub Profile
@clohr
clohr / package.json
Last active October 2, 2015 06:55
NPM Build Pipeline Scripts
{
"name": "",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"lint": "eslint .",
"pretest": "npm run lint",
"test": "babel-node ./node_modules/.bin/blue-tape ./test/**/*.spec.js | faucet",
"cover": "babel-node node_modules/.bin/babel-istanbul cover node_modules/.bin/tape ./lib/*.js --report html --dir ./test/coverage",
@clohr
clohr / findParent.js
Created August 6, 2015 23:40
Find DOM Element Parent Node
'use strict';
module.exports = function findParent(childElement, parentNodeSelector) {
while (childElement && childElement.parentNode !== document) {
if (childElement.hasAttribute(parentNodeSelector) || childElement.className.indexOf(parentNodeSelector) > -1) {
return childElement;
}
childElement = childElement.parentNode;
}
return null;
@clohr
clohr / media-query.js
Created August 6, 2015 23:42
Media Query
'use strict';
var mediaQuery = function() {
var _queries = {};
var getMediaQueries = function getMediaQueries() {
var metaTags = document.querySelectorAll('meta[data-breakpoint]');
var metaArr = [].slice.call(metaTags);
var key;
{
"preset": "google",
"fileExtensions": [ ".js", "jscs" ],
"requireParenthesesAroundIIFE": true,
"maximumLineLength": 120,
"validateLineBreaks": "LF",
"validateIndentation": 4,
"disallowKeywords": ["with"],
@clohr
clohr / safeDOM.js
Last active October 4, 2015 15:40
safeDOM
const logger = R.compose(
R.bind(console.log, console),
R.concat('Missing selector '),
R.flip(R.identity)
);
const mapCb = (x) => console.log(x.textContent);
const mapper = R.map(mapCb);
@clohr
clohr / virtual-dom.js
Last active September 5, 2015 18:45
Example using Matt Esch's virtual-dom
var h = require('virtual-dom/h');
var createElement = require('virtual-dom').create;
var BoxHook = function(){};
BoxHook.prototype.hook = function(elem, key, previousValue) {
console.log('Hello from ' + elem.id + '!\nMy key was: ' + key);
};
var properties = {
attributes: {
@clohr
clohr / most-combine-streams.js
Last active September 6, 2015 17:07
Examples using MostJS
var most = require('most');
var xInput = document.querySelector('input.x');
var yInput = document.querySelector('input.y');
var resultNode = document.querySelector('.result');
var internals = {};
internals.add = function add(x, y) {
return x + y;
};
@clohr
clohr / sinon-stub-example.js
Last active September 8, 2015 15:15
Sinon stub example
'use strict';
var R = require('ramda');
var sinon = require('sinon');
var log = {};
log.warning = R.bind(console.warn, console);
sinon.stub(log, 'warning');
var args = 'this is a test';
@clohr
clohr / app.js
Created September 12, 2015 16:42
RxJS Autocomplete
var $input = document.getElementById('term');
var $results = document.getElementById('results');
var keyups = Rx.Observable
.fromEvent($input, 'keyup')
.map(function(e) {
$results.innerHTML = '';
return e.target.value;
})
.filter(function(text) {
@clohr
clohr / transducer.js
Last active April 4, 2016 05:22
Transducers with Ramda and RxJS
var Rx = require('rx');
var R = require('ramda');
var seq = Rx.Observable.range(1, 10);
var isEven = function isEven(x) { return x % 2 === 0; };
var add1 = function add1(x) { return x + 1; };
var transducer = R.compose(R.map(add1), R.filter(isEven));
var source = seq.transduce(transducer);