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
JavaScript
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
}