0.3.0 • Published 12 years ago
quack v0.3.0
quack
Check the values of arguments passed to a function - see if they quack like a duck.
example
var quack = require('quack');
var coolFunction = function(string, array, object, number){
if (! quack('string, array, object, number', arguments)) {
throw new Error('is not a duck');
}
console.log('is a duck');
};
coolFunction('one', ['two'], {three: 3}, 'four'); // throws: "is not a duck", last arg is wrong
coolFunction('one', ['two'], {three: 3}, 4); // logs: "is a duck", tickinstallation
NodeJS
npm install quackvar quack = require('quack');Browser
Download quack.js, quack.min.js, and quack.js.src, and add them to your project.
RequireJS (AMD)
require(['path/to/quack'], function(quack){
// use quack here
});Standard
<script src="path/to/quack.min.js"></script>usage
quack takes two arguments, and returns a boolean (true if it validates)
- the expected signature (array or comma-separated string)
- the arguments (
arrayorargumentsobject)
Two arrays:
quack(['string', 'number'], ['my string', 123]); // trueA string and arguments object:
var coolFunction = function(){
return quack('string, number', arguments);
};
coolFunction('my string', 123); // truevalidation types
- string:
String(primitive) - number:
Number(primitive) - boolean:
Boolean(primitive) - object: ECMAScript
Object, includingArray,Function,Object,RegExp,new Number(0), andnew String('') - array:
Array(not includingargumentsobject) - function:
Function - date:
Dateobject - regexp:
RegExpobject - arguments:
argumentsobject
road map
- 0.1: DONE initial release, with
string,number,object, &array(with tests) - 0.2: DONE add
function,date,regexp,arguments - 0.3: DONE shorthand
eg.
'"", [], 1'short for'string, array, number' - 0.4:
options: a third argument- throws
boolean: throw an error if validation fails - console
boolean: log to the console if validation fails - message
string: a specific message for logged/thrown errors
- throws
- 0.5: types of
arrays&objectproperties'[]string': anarrayofstrings'[string, number]': specific types within anarray'{}string': anobjectwith onlystringproperties'{val1: string, val2: number}': specificobjectproperty names and types
- 0.6: plain object type, with
'{}'shorthand