1.0.0 • Published 8 years ago

reorg v1.0.0

Weekly downloads
10
License
MIT
Repository
github
Last release
8 years ago

reorg

codecov.io

Type checking and polymorphism via fallbacks.

Installation

$ npm install reorg

Examples

var fn = reorg(function(str, obj, cb) {
    cb(str, JSON.stringify(obj));
}, "string", "object");

var next = function(a, b) {
  console.log("A:", a, "B:", b);
}

fn(next);
// => A:  B: {}

fn("Hello", next);
// => "A: Hello B: {}"

fn({ key : "val"}, next);
// => A: B: {"key":"val"}

fn("Hello", {"key": "val" }, next);
// => A: Hello B: {"key":"val"}

var anotherFn = reorg(function(requiredString, optionalCallback) {
  optionalCallback(requiredString);
}, "string!", ["function", function() {}]);

anotherFn();
// => Error: Expected argument undefined to be of type string

anotherFn("Hello");
// => executes, disappearing into space

API

reorgfunction
.args(argv, constraints, [truncate]) => Array
.checkArg(arg, constraint)Object
.isType(arg, type)Boolean
.defaultForType(type)*

reorg ⇒ function

Adds type checking and polymorphism to a function.

Returns: function - Returns wrapped function.

ParamTypeDescription
fnfunctionThe function to wrap.
...constraintContraintSplat of constraints

Example

var newFn = reorg(function(requiredString, optionalCallback) {
    optionalCallback(requiredString);
  }, "string!", ["function", function(next) { next(); }]);

reorg.args(argv, constraints, truncate)

Checks an array of arguments against an array of constraints, and optionally truncates the results.

Returns: Array - Array of reorganized arguments.

ParamTypeDefaultDescription
argvArrayThe arguments array to check.
constraintsArrayAn of corresponding constraints.
truncateBooleanfalseIf true, truncates results at longer of argv/constraints.

reorg.checkArg(arg, constraint) ⇒ Object

Checks single argument against a constraint. Returns object containing fallback value if pass fails.

The following are valid constraints:{

Returns: Object - Returns {pass, fallback}.

ParamTypeDescription
arg*The argument to check.
constraintConstraintThe constraint to check against.

Example

reorg.checkArg(123, "string");
  // => { pass : false, fallback : "" }

reorg.isType(arg, type) ⇒ Boolean

Checks if an argument is of a type. type can include primitive types, "array", or a function

Returns: Boolean - Whether the check passes/fails.

ParamTypeDescription
arg*The value to check.
typeString | functionA type or predicate to check against.

reorg.defaultForType(type) ⇒ *

Fallback values for types. Throws error if not string, object or array.

Kind: static method of reorg
Returns: * - A default value.

ParamTypeDescription
typeStringIndicates which type for which we want fallback.

License

MIT