1.0.0 • Published 10 years ago

reorg v1.0.0

Weekly downloads
10
License
MIT
Repository
github
Last release
10 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

1.0.0

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago