CERNY.schema
The schema package provides functions for validating a JavaScript object against a schema. A schema is a JavaScript object describing a shape (form, schema, pattern). It is composed of constraints, which have a name and a value. These constraints are the members of the schema. The name of the constraint is mapped on an constraint value, which can be a primitive value, a function, a regular expression or a schema.
The function validate is used to perform validation of an object against a schema. It returns an object (called validation report), which contains an error message for every constraint of the schema, that the object does not conform to. Thus the report builds up the *same structure* as the the schema. If the object conforms to the schema, validate returns an empty object. For convenience the function isValid takes a validation report and returns true for an empty result and false, if the report contains errors.
If the constraint value is a function this can be used within the function to navigate to properties within the object. With this._parent you can navigate up the object tree. Thus it is not recommended to perform validation on objects that do contain a _parent property. When specifying a schema, you should not use the _parent property either.
If the constraint value is a function the following rules apply. The function must return true, if the value of the object fulfills the constraint, otherwise the function should return a String containing an error message or false, which will produce a generic error message. Exceptions that occur within the function are considered an error message also.
Used by
Functions
validate
Validate an object against a schema.
The schema is a JavaScript object, which is seen as map of properties to either values, functions, regular expressions or schemas. The values of the properties in a schema are called constraints. The object is said to confirm to schema, if all properties of schema exist in object and all values of object match the corresponding constraint.
isValid
Return true, if a validation result is empty (containing no validation errors). False, otherwise.
optional
Defines the term optional for use in schemas.
arrayOf
Defines the term arrayOf for use in schemas. The type can be a function or a schema.
isoDate
Defines the term ISO date for use in Schemas.

