src/js/libs/spiritual-gui.js
function(decoration) {
		var slice = [].slice;
		return function(base) {
			return function() {
				var argv, callback, result, that = this;
				argv = 1 <= arguments.length ? slice.call(arguments, 0) : [];
				result = void 0;
				callback = function() {
					return (result = base.apply(that, argv));
				};
				decoration.apply(this, [callback].concat(argv));
				return result;
			};
		};
	}
function(decoration) {
		var slice = [].slice;
		return function(base) {
			return function() {
				var argv, callback, result, that = this;
				argv = 1 <= arguments.length ? slice.call(arguments, 0) : [];
				result = void 0;
				callback = function() {
					return (result = base.apply(that, argv));
				};
				decoration.apply(this, [callback].concat(argv));
				return result;
			};
		};
	}
function ( decoration ) { var slice = [ ] . slice ; return function ( base ) { return function ( ) { var argv , callback , result , that = this ; argv = 1 <= arguments . length ? slice . call ( arguments , 0 ) : [ ] ; result = void 0 ; callback = function ( ) { return ( result = base . apply ( that , argv ) ) ; } ; decoration . apply ( this , [ callback ] . concat ( argv ) ) ; return result ; } ; } ; }
Decorate function around.
@param {function} decoration
@returns {function}
Decorate function around .