View gitconfig
[alias]
s = status
d = diff
c = checkout
co = commit
ps = push
l = log
p = pull
b = branch
[user]
View __responsive styled components
// this file is just here to change the name of the gist
import React from 'react'
import styled from 'styled-components'
const makeResponsiveComponent = (rulesets, tagName = 'div') =>
styled(tagName)`${buildStyles(rulesets)}`
const buildStyles = rulesets =>
rulesets.reduce(
(cssString, { constraint, width, rules }) =>
View get-time-of-day.js
function getTimeOfDay (start, end) {
if (start < 12 && end > 16) { return null } // not specific enough
// we don't care about the window from 22:00 - 06:00
const timesOfDay = Array(24)
.fill('Morning', 6, 12)
.fill('Afternoon', 12, 16)
.fill('Evening', 16, 22)
return Array.from(new Set(timesOfDay.slice(start, end)))
View make-reducer.js
export default function (reducerMap = {}, initialState) =>
(state = initialState, { type = '', ...payload }) =>
(reducerMap[type] || (() => state))(state, payload) // if type isn't found in the reducer, just use a noop
View React Join Children
This file is only here to provide the title of the gist
View classnames.js
export default function () {
let className = ''
let options = {}
const classNames = []
if (arguments.length > 1) {
className = arguments[0]
options = arguments[1]
classNames.push(className)
} else {
View flatten-immutable-list.js
// must run in a context where Immutable is available, like in the console here: https://facebook.github.io/immutable-js/docs/#/
const flattenList = items => {
return items.reduce((result, item) => {
result = result.push(item)
return item.has('children') ? result.concat(flattenList(item.get('children'))) : result
}, Immutable.List())
}
const nestedList = [
View sagas-spec.js
import test from 'tape';
import { put, call } from 'redux-saga/effects'
import { changeLOS } from './sagas'
import api from 'nowhere'
test('changeLOS Saga', assert => {
const gen = changeLOS()
assert.deepEqual(
View form-validation-and-utils-with-cached-functions.jsx
import React from 'react'
export default options => {
return WrappedComponent => class FormValidation extends React.Component {
constructor () {
super()
this.validate = options.validate
this.cachedFunctions = { onChange: {}, onBlur: {} }
this.state = options.fields.reduce((result, field) => {
View form-validation-and-utils.jsx
import React from 'react'
export default options => {
return WrappedComponent => class FormValidation extends React.Component {
constructor () {
super()
this.validate = options.validate
this.state = options.fields.reduce((result, field) => {
result.fields.push(field)