Merge pull request #43 from walmartlabs/user/eran

0.0.7
Merge pull request #44 from walmartlabs/develop

0.0.7
Adding object to allowed types and bumping version
Adding basic function support
Merge pull request #1 from wpreul/feature/functions

Adding basic function support
Adding support for object validation traversal
Exposing FunctionType
Merge pull request #47 from wpreul/develop

Adding function type and object validation traversal
Merge pull request #48 from walmartlabs/develop

v0.0.8
Adding support of array argument in valid()

It's useful to make valid() handle array arguments, not only
seperated arguments.

Example usage case:

//This array will be used in other part of code,
//and number of payment method could be changed later.
//So, we will store list of valid payment methods in array.
var payment = ["visa", "mastercard", /*...*/];

var schema = {
    //not only accepts string arguments,
    //but also accepts arrays of valid cases
    payment: Joi.types.String().valid(payment),

    //here is an alternative form, much verbose than the upper
    payment: Joi.types.String().valid.apply(Joi.types.String(), payment),
}
fix typo
Fixing small bug in object convert
Merge pull request #50 from wpreul/develop

Fixing small bug in object convert
Adding support for multiple schema validation
Updating to not throw when T is undefined
Refactoring to support validating child configs
Bug fix: array.convert can handle string correctly

There is a bug in array.convert. array.convert should convert
string into array when given string is not a JSON format. If given
String is non-JSON format, array.convert should return an array
which contains the given string.

For example,

case 1: 1 -> [ 1 ]
case 2: '1' -> [ '1' ]
case 3: 'string' -> [ 'string' ]
case 4: "['string1', 'string2']" -> ['string1', 'string2']

To handle case 4, code uses JSON.parse to determine whether given
string is JSON format or not. However, JSON parse 1) converts
string into number when !isNaN(given_string), and 2) throws
exception when given_string is not JSON format and
isNaN(given_string).
As a result, above test cases was working like following.

case 1: 1 -> [ 1 ]
case 2: '1' -> [ 1 ]
case 3: 'string' -> undefined //returns nothing!
case 4: "['string1', 'string2']" -> ['string1', 'string2']

To solve the problem, I added 1) isNaN check before try JSON.parse
and 2) return [ given_string ] when JSON.parse throws error.
Add option to validate

when validate function is valled, it tries to convert given object
into configured type, and check constraints. However, it does not
convert object into configured type. This convertion should be
done in some place, so I think it's better to do it in joi.

To achive this, I added a option argument to validate. If convert
is true, validate converts given object to given configuration.

I believe this is useful when joi is used with hapi,
especially with query parsing.
fix typo
Adding optional flag