A CocktailJS Trait Extension to add AOP methods to the host class
JavaScript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
test/unit
.gitignore
.jshintrc
.travis.yml
Gruntfile.js
README.md
package.json

README.md

Build Status npm version

cocktail-trait-advisable

A CocktailJS Trait Extension

A Trait to add AOP advices into Classes/Objects. The methods around, after and before are available on host classes or objects.

Install

npm install cocktail --save
npm install cocktail-trait-advisable --save

Trait requires (glue code)

None.

Usage

Define a class with advisable trait:

MyClass.js

var cocktail = require('cocktail'),
    advisable = require('cocktail-trait-advisable');

cocktail.mix({
    '@exports': module,
    '@as'     : 'class',

    '@traits' : [advisable],

    aMethod: function () {
        console.log('a method is called!');
    }
});

And then use it on your index.js

index.js

var MyClass = require('./MyClass');



var obj = new MyClass();

function afterFn() { console.log('this will be called after!'); }

// #1 attach the after advice
obj.after('aMethod', afterFn);


// #2 call the adviced method
obj.aMethod(); 

On #1 we attached the advice for after calling aMethod method in our obj. Then when #2 is executed the console output will show:

node index.js
a method is called
this will be called after!

API

The following methods will be publicly available on the host class:

  • after( methodName, adviceFunction, [scope] ): Adds the adviceFunction to be called after the method.
    • methodName {String}: The method name in the host class.
    • adviceFunction {String|Function}: the function or the name of the function to be called. It receives the same parameters as the method.
    • scope {Object} the scope to execute the adviceFunction. Optional.
  • before( methodName, adviceFunction, [scope] ): Adds the adviceFunction to be called before the method.
    • methodName {String}: The method name in the host class.
    • adviceFunction {String|Function}: the function or the name of the function to be called. It receives the same parameters as the method.
    • scope {Object} the scope to execute the adviceFunction. Optional.
  • around( methodName, adviceFunction, [scope] ): Adds the adviceFunction to be called around the method.
    • methodName {String}: The method name in the host class.
    • adviceFunction {String|Function}: the function or the name of the function to be called. It receives the method as the first parameter and then same parameters.
    • scope {Object} the scope to execute the adviceFunction. Optional.