@code-o-mat/method-o-mat

a method factory system

Usage no npm install needed!

<script type="module">
  import codeOMatMethodOMat from 'https://cdn.skypack.dev/@code-o-mat/method-o-mat';
</script>

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.