@code-o-mat/method-o-mat
v0.0.17
Published
a method factory system
Downloads
5
Maintainers
Readme
MethodOMat
Version 0.0.1x ALPHA:
Experimental:
This library should be usable in its current form, but it is currently an experimental system.
This is part of the **CodeOMat meta programming library, an experimental library of coding factories intended to make coding simpler and easier to learn.
installation
npm install method-o-mat
Ordering Modes:
Ordering modes define where a new method will be placed relative to the existing method in the contructed method.
There are two choices:
append: The new method will be appended to the end of the existing function.
Prepend: The new method will be prepended to the beginnig of the existing function.
Examples
const existingMethod = () => console.log('existing method');
const newMethod = () => console.log(('new method'));
const methodOMat = new MethodOMat('ohlook!');
const resultMethod
= methodOMat.method(existingMethod).append(newMethod);
resultMethod(); // existing method new method;
methodOMat.method(existingMethod).prepend(newMethod);
resultMethod(); // new method existing method;
CombineModes:
Combine modes define the way the new method is combined into the existing method.
reduce: The constructed method calls the existing method and the new methods in turn ( according to the Ordering Mode). The return values of the each function are passed as a parameter into the next function to be called.
stack: The constructed method calls the existing method and the new methods in turn ( according to Ordering Mode). The methods use the same parameters and do not communicate with each other.
// example of setting reduce or stack modes.
const existingMethod = (value) => value - 10;
const newMethod = (value) => value * 2;
const methodOMat = new MethodOMat('ohlook!');
const resultMethod
= methodOMat.method(existingMethod).append().reduce(newMethod);
const otherResultMethod
= mehodOMat
resultMethod(10); //
methodOMat.method(existingMethod).stack(newMethod)
resultMethod(); // new method existing method;
ReturnModes:
usage
import MethodOMat from 'method-o-mat';
const baseMethod = (value) => value;
const appendMethod = (value) => value + 10;
const prependMethod = (value) => value * 2;
const reductionMethod = (value) => value * 10;
const methodOMat = new MethodOMat('testMethodOMat');
// set the baseMethod
methodOMat.method(baseMethod);
const thisMethod = methodOMat.method();
console.log(thisMethod(20)) // 20;
methodOMat.