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
69 lines (57 loc) • 2.57 kB
JavaScript
import Bunyan from 'bunyan';
const log = Bunyan.createLogger({name: "PluginMethods"});
import { NONE, CLASS_BUILDER } from '../constants/types';
export const prependConstructor =(self, key, newConstructor)=>{
const plugin = self.___parent();
const prepender =({classOMat, mixins, defaults, params}, buildMethods)=>{
const oldConstructor = mixins.constructor;
const thisConstructor
= function(...p) {
newConstructor.call(this, ...p);
oldConstructor.call(this, ...p);
}
mixins.constructor = thisConstructor;
return [{classOMat, mixins, defaults, params}, buildMethods];
}
plugin.append().buildConstructor(prepender);
}
export const appendConstructor =(self, key, newConstructor)=>{
const plugin = self.___parent();
const appender =({classOMat, mixins, defaults, params}, buildMethods)=>{
const oldConstructor = mixins.constructor;
const thisConstructor
= function(...p) {
oldConstructor.call(this, ...p);
newConstructor.call(this, ...p);
}
mixins.constructor = thisConstructor;
return [{classOMat, mixins, defaults, params}, buildMethods];
}
plugin.append().buildConstructor(appender);
}
export const prependMethod =(self, key, newFunktion)=>{
const parent = self.___parent();
const buildMethods = parent.buildMethods();
const funktion = buildMethods[key];
buildMethods[key] =
({classOMat, mixins, defaults, params}, buildMethods)=>{
let workingArguments;
[workingArguments, buildMethods]
= newFunktion({classOMat, mixins, defaults, params}, buildMethods);
return funktion({classOMat, mixins, defaults, params}, buildMethods);
}
parent.buildMethods(buildMethods);
}
export const appendMethod =(self, key, newFunktion)=>{
const parent = self.___parent();
const buildMethods = parent.buildMethods();
const funktion = buildMethods[key];
buildMethods[key] =
({classOMat, mixins, defaults, params}, buildMethods)=>{
let workingArguments;
[workingArguments, buildMethods]
= funktion({classOMat, mixins, defaults, params}, buildMethods);
return newFunktion({classOMat, mixins, defaults, params}, buildMethods);
}
parent.buildMethods(buildMethods);
}