Skip to content

vamp/aspect.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

aspect.js is a JavaScript AOP library (simple, flexible, customizable)

##How to use?

object case:

var scope = {resolveState: function(state){
  return state ? 'VALID' : 'INVALID';
}};


Aspect(scope)
	// before sample
	.before('resolveState',
		// log input parameter
		function(state){
			console.log('scope.resolveState(', state, ') called');
		},

		// basic filtration (breaks function execution if any value returns and return this value as function result)
		// add this before "log"
		function(state){
			if(state!==true && state!==false){
				return "Invalid parameter 'state' for resolveState function";
			}
		}
	)

	// around sample
	.around('resolveState', function(innerFunction, args){
		// invert "state" parameter
		console.log("invert state parameter from '", args[0], "' to '", !args[0], "'");
		return innerFunction.call(this, !args[0]);
	})

	// after sample
	// only log arguments & result
	.after('resolveState', function(result, state){
		console.log('scope.resolveState(', state, ') = ', result);
	})

Function case:

// Using in function case:
var pow = function(variable){
  return variable * variable;
};


// create new function (also you can reassing existing)
var tripplePow = Aspect(pow).before(function(variable){
	console.log("POW(", variable, ") called");
}).after(function(result, variable){
	return result*variable;
});

Additional features:

// After first aspect call on function you can use next syntax:
scope.resolveState.after(function(){
  // here is your logic
});

// Getting list of handlers
var afterHandlers = tripplePow.after.valueOf();

// Remove all handlers
for(var i=0, j=afterHandlers.length; i<j; i++){
  tripplePow.after.remove(afterHandlers[i]);
}

##Extensibility

  • Add or remove function using Aspect() using add/remove functions
  • Add other aspects (except before, after, around... see source)

About

Aspect-library for javascript (simple, flexible, customizable)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors