Giter Site home page Giter Site logo

intercept's Introduction

Intercept

Simple metaprogramming for methods.

The intercept-function enables input and output hooks that will run before and after the intercepted method. In the input-hook lets you control the input to the intercepted method and the output-hook the return value.

Simple Example

// Some object
var math = {
    // Original method
    add: function add(a, b) {
        return a + b;
    }
};

// Now we intercept this method to control its in- and outputs.
// A `release`-function is returned to release the intercepted method and
// revert it to its original state.
var release = intercept(math, 'add',
    // The first function controls the input
    function input(args) {
        console.log('in', args);
        return [5, 5]; // Important to return an array!
    },
    // The second function controls the output
    function output(value) {
        console.log('out', value);
        return 'Monkey'; // Important to return the value!
    }
);

// Now we call the method
math.add(1, 2);
//=> in [1, 2]
//=> out 10
//=> 'Monkey'

// If we release the method and call it again
release();
math.add(2, 3);
//=> 5

Arguments

host

Object - The object to which the method belongs

name

String - The name of the method to intercept

input (optional)

Function - A function to be called before the original implementation and lets you control the input to the method. If supplied, it MUST return an array of arguments to the original implementation!

output (optional)

Function - A function to be called after the original implementation and it lets you control the output of the method. If supplied, what ever it returns will be used as the return value of the method.

Returns

Function - A function to release the method and revert it to its original state.

intercept's People

Contributors

marlun78 avatar

Stargazers

Dmitrii Vasilev avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.