Skip to content

Explicitly define your methods so you can annotate and augment them

Notifications You must be signed in to change notification settings

explicitjs/explicit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

build status Code Climate js-standard-style

Explicit.js

Explicit.js allows explicitl annotation, documentation and augmentation of JavaScript methods.

npm i explicit joi -S

Usage

var explicit = require("explicit"),
    joi = require("joi");

var object = explicit({
    foo: {
        $args: [
            joi.string().meta("bar")
        ],
        $: function (bar) {
            console.info(bar);
        }
    }
});

object.foo(1); // 1
object.foo.valid(1); // will fail because the first argument is not allowed to be a string
object.foo.validObject({
    bar: "Hello World"
}); // "Hello World"

For single method definition add the $one parameter.

var foo = explicit({
    $one: true,   
    $args: [
        joi.string().meta("bar")
    ],
    $: function (bar) {
        console.info(bar);
    }
});

foo(1); // 1
foo.valid(1); // will fail because the first argument has to be a string
foo.validObject({
    bar: "Hello World"
}); // "Hello World"

And in case you want to make the assertion required you add the $assert parameter.

var foo = explicit({
    $one: true,
    $assert: true, 
    $args: [
        joi.string().meta("bar")
    ],
    $: function (bar) {
        console.info(bar);
    }
});
foo(1); // will fail because the first argument has to be a string

About

Explicitly define your methods so you can annotate and augment them

Resources

Stars

Watchers

Forks

Packages

No packages published