Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/llafuente/argumentify
From JSDoc info make sure that your arguments are valid appending validation code at the beginning of your functions using falafel.
https://github.com/llafuente/argumentify
Last synced: about 2 months ago
JSON representation
From JSDoc info make sure that your arguments are valid appending validation code at the beginning of your functions using falafel.
- Host: GitHub
- URL: https://github.com/llafuente/argumentify
- Owner: llafuente
- Created: 2014-06-09T11:47:33.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2014-09-17T15:09:23.000Z (over 10 years ago)
- Last Synced: 2024-10-31T16:59:58.531Z (about 2 months ago)
- Language: JavaScript
- Homepage:
- Size: 168 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Argumentify [![Build Status](https://secure.travis-ci.org/llafuente/argumentify.png?branch=master)](http://travis-ci.org/llafuente/argumentify)
From JSDoc info make sure that your arguments are valid appending validation code at the beginning of your functions using [https://github.com/substack/node-falafel](falafel).
## What does this means?
```js
/**
* @param {Number} x
*/
function test(x) {// your code wont be modified!
}
```Will be rewritten to:
```js
/**
* @param {Number} x
*/
function __number(x) {
if (x == undefined || Number.isNaN(x) || 'number' !== typeof x) {
throw new Error("x is undefined or null")
}
// your code wont be modified!
}
```So your comments generate code... at last!
## Usage
**Browserify transform**
```js
output_stream = fs.createWriteStream('debug/js-2dmath-browser-debug.js');require('browserify')('./index.js')
.transform('argumentify')
//or: .transform(require('argumentify').verbose())
.bundle()
.pipe(output_stream);
```**Falafel**
```js
var output = require("falafel")(src, {
comment: true,
loc: true
}, require("argumentify").falafel);
```## API
```js
// argumentify itself is a function for browserify compatibility
var argumentify = require("argumentify");//enable/disable verbose, usefull to fully cover your code
argumentify.verbose({Boolean})// add new validator or overwrite default ones
argumentify.customValidators({
Name: {
// %var-name% is a token for check and message that is obviously... the name of the argument!
check: ["javascript code inside the if", "another check"] //will be joined with OR!
message: '%var-name% is undefined or null'
}
});// This is the falafel callaback that transform your code
argumentify.falafel;// return the array with default String check (typeof)
argumentify.check.String();// return the array with default Number check (typeof, !isNaN)
argumentify.check.Number();// return the array with default Boolean check (typeof)
argumentify.check.Boolean();// return the array with default Array check (Array.isArray)
argumentify.check.Array();// return the array with default Object check (typeof, !Array.isArray)
argumentify.check.Object();// return the array with default Function check (typeof)
argumentify.check.Function();// return the array with default fixed size array of numbers check (...)
ArrayOfNumbers(n);// return the array with default fixed size 2 levels array of numbers check (...)
MultiArrayOfNumbers(n, m)```
## License
MIT