cast.js
The cast.js library was written to provide convenient methods for validating and converting object properties for model based frameworks like backbone.js. The core provides several features to make converting, validating, and error handling easier:
- Convert object properties in place (by passing an object and property name)
- Validate object properties without converting (by passing a value only)
- Handle various data states at any point (blank, valid, invalid, out of range)
Syntax
The syntax was designed to be human readable. See the Module API for complete documentation of built in modules.
asa // converts value in placeisavalid // returns true if value is valid for that data type// Note: is/as/a/an are optional.
Here are some real-world examples:
if valid// do something
State Handlers
The if
method allows you run callback functions based on the current state (blank, valid, out of range, or invalid). Usually this is done at the end of a method chain, but it can be done any time after the initial data type is cast.
asan
Note: States are evaulated in the order shown here. If a given state is true and a handler was provided, only the handler for that state will be called. If a state is true, but no handler was provided, the next state will be evaluated.
Creating Custom Modules
Registering your Module
You can add you own custom modules using the cast.register
method. All modules must provide an initialize
method at the very least. cast.register
can be called in two ways:
cast // For simple modules with no chained methodscast
Note: an unregister method is also provided for testing purposes: cast.unregister('moduleOne', 'ModuleTwo', ...)
Aliases
You can add aliases for you modules or module methods by including the alias/method mapping in your module definition:
cast
Setting the State
All of the methods in you module will change the state of the cast in some way or another. There are three built in helpers: set
, fail
, and rangeError
. Here is an example of how they could be used:
cast
Built-in Helpers
Custom modules have access to a handfull of useful helpers for parsing data. You can use these from within you module methods by calling this.helperName(x)
.
makeType(x)
convertsx
to a the same data type as the module by running it's initialize function and returning the value.makeString(x)
convertsx
to a string if it can, or falls back to an empty string.makeNumber(x,d)
parsesx
as a number, optionally tod
decimal places or returnsNaN
.realTypeof(x)
returns the actual type ofx
. Includes support for arrays and date objects.trimString(x)
removes the leading and trailing whitespace from single line strings. Multi-line strings are not changed.isBlank(x)
returns true ifx
isnull
,undefined
or an empty string.isValid(x)
returns false ifx
isnull
,undefined
,NaN
orInvalidDate
.