UNPKG

class-o-mat

Version:

ALPHA VERSION ONLY: class-o-mats will help to create getter-setter functionality with validations that can be attached to a container class for easier coding. Some basic validations are included. class-o-mats also has the ability to store params as bloc

87 lines (65 loc) 1.82 kB
import Bunyan from 'bunyan'; const log = Bunyan.createLogger({name: "field-functions"}); import { NONE } from '../constants/types'; const paramSetter =({isStack, isQueue})=>{ if (isStack === false && isQueue === false) { return (ts, params, key, value)=>params[key] = value; } if (isStack === true) { return (ts, params, key, value)=>{ params[key].push(value); } } return (ts, params, key, value)=>params[key].unshift(value); } const getter =(opt)=>(ts, params, key)=>params[key]; const setter =(opt)=>paramSetter(opt); const getterSetter =(opt)=>{ const setter = paramSetter(opt); return (ts, params, key, value=NONE)=>{ if (value === NONE) return params[key]; setter(ts, params, key, value); return ts; } } const getterSetterSafe =(opt)=>{ const setter = paramSetter(opt); return (ts, params, key, value=NONE, safe=NONE)=> { if (value === NONE) { if (safe === NONE) return params[key]; if (safe === false) { throw new Error(`Null parameter set for ${key}.`); } if (safe === true) { return ts; } } setter(ts, params, key, value); return ts; } } const toggler =(opt)=>(ts, params, key)=>{ const v = params[key]; params[key] = (v === true ) ? false : true; return ts; } const swapper =(opt)=>(ts, params, key, value=NONE)=>{ if (value === NONE) return params[key]; const v = params[key]; params[key] = value; return v; } const staticSetter =({staticValue})=> (ts, params, key)=>{ params[key] = staticValue; return ts; } export { getter, setter, getterSetter, getterSetterSafe, staticSetter, toggler, swapper }