Skip to content

Instantly share code, notes, and snippets.

View JesterXL's full-sized avatar
🔊
writing

Jesse Warden JesterXL

🔊
writing
View GitHub Profile
const { map, nth, filter, getOr, set, startCase, get, flow, isEqual, rearg, identity, curry } = require('lodash/fp')
const R = require('ramda')
const { invoker, apply } = R
const parseHumans = flow([
JSON.parse,
listToPeople,
filterHumans,
formatNames
])
const parseHumans = jsonString => flow([
JSON.parse,
listToPeople,
filterHumans,
formatNames
])(jsonString)
const parseHumans = jsonString =>
formatNames(
filterHumans(
listToPeople(
JSON.parse(jsonString)
)
)
)
const getName = get('name')
const setName = set('name')
const getFixedName = flow([getName, startCase])
const nameAndPerson = [{f: getFixedName}, {f: identity}]
const callF = invoker(1, 'f')
const flipMap = curry(rearg([1, 0], map))
const mapNameAndPerson = flipMap(nameAndPerson)
const getFixedNameAndPerson = flow([callF, mapNameAndPerson])
const setNameWithPersonNameAndPerson = apply(setName)
const mapFormatNames = flow([getFixedNameAndPerson, setNameWithPersonNameAndPerson])
const getName = flow([get('name'), startCase])
const setName = set('name')
const formatNames =
map(
list => setName(getName(list), list)
)
const formatNames =
map(
list => set('name', startCase(get('name', list)), list)
)
const formatNames = people =>
map(
list => set('name', startCase(get('name', list)), list),
people
)
const getTypeOrUnknown = getOr('unknown', 'type')
const equalsHuman = isEqual('human')
const isHuman = flow([getTypeOrUnknown, equalsHuman])
const filterHumans = filter(isHuman)
const getTypeOrUnknown = getOr('unknown', 'type')
const filterHumans =
filter(
person => getTypeOrUnknown(person) === 'human'
)