teth
Version:
Functional, reactive, pattern matching based, centralized state tree, open source JS library.
24 lines (20 loc) • 625 B
JavaScript
/* Copyright 2017 Ronny Reichmann */
/* FUZZIFY Adjectify value ranges for later use in pattern matching */
function composeCheckFn (compareFn, adjective) {
return nextCheckFn => {
return value => {
if (compareFn(value)) return adjective
else return nextCheckFn(value)
}
}
}
function fuzzify (config) {
const initializers = Object.keys(config)
.map(adjective => {
const compareFn = config[adjective]
return composeCheckFn(compareFn, adjective)
})
initializers.reverse()
return initializers.reduce((acc, initCheckFn) => initCheckFn(acc), v => v)
}
module.exports = fuzzify