npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

parametric

v0.0.5

Published

Pseudo method overloading for JavaScript.

Downloads

14

Readme

parametric

Pseudo method overloading for JavaScript.

Usage

You can use parametric in a couple different ways.

First Method

One way to use parametric is to call it inside a function that will have more than one parameter signature.

For example, suppose you'd like to make a function called myFunction that can receive different arguments based on what you want it to do. Let's say you'd like myFunction to be called with three arguments:

myFunction("some string", 4.5, function() {
    // ...
});

or with just two arguments:

myFunction("another string", function() { // notice the number argument was dropped.
    // ...
});

You can use parametric to set rules for the arguments that can be passed to your function. Call parametric inside your function like this:

var parametric = require('parametric');

function myFunction( /*parameters are not needed here*/ ) {
    return parametric.overload(arguments,
        [
            ["", 0, function(){}], // signature of a function that takes a string, number, and function as arguments.
            ["", function(){}] // signature of a function that takes a string and function as arguments.
        ],
        [
            function(stringVar, someNumber, callback){ /*... do something here ...*/ },
            function(stringVar, callback){ /*... do something here ...*/ }
        ]
    );
}

// called with three args:
myFunction('hello', 3.14159, function(){console.log('awesome')});
// called with two args:
myFunction('hello', function(){console.log('awesome, but I want some pie.')});

The first argument passable to parametric is always the javascript built-in arguments, which contains the arguments that eventually get passed to your function.

The second argument to parametric is an array of signatures accepted by your function where each signature is an array of javascript literals that represent a possible combination of data types accepted by your function. In the above example, myFunction can accept an argument list consisting of a string, a number, and a function, or it can accept an argument list consisting of a string and a function.

The last argument to parametric is an array of functions that correspond to the array of signatures in the first argument. In the above example, when myFunction is called, parametric matches up the arguments passed to myFunction with a signature in the array of signatures, and will call the corresponding function from the array of functions. Just make sure the order of the functions is in the same order as the signatures.

If the arguments don't match a signature, nothing gets executed, and a message is console.logged.

Lastly, be sure to return the value returned from parametric.overload() as the return value for your function (notice the return in the first line of myFunction in the above example).

Second Method

Note: This method is not implemented yet. Only the first method works for now.

The second way to use parametric is more similar to traditional method overloading:

var parametric = require('parametric');

var myFunction;

parametric.overload(myFunction, ["", "", 1], function(stringOne, stringTwo, number) {
    // do stuff with the three arguments.
});
parametric.overload(myFunction, ["", 1], function(stringOne, number) {
    // do stuff with the two arguments.
});

Contributing

Any suggestions, pull requests, patches, etc., are most welcome!