Simple validatable models using revalidator.
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
spec
.gitignore
.jshintrc
.travis.yml
Makefile
README.md
UNLICENSE
index.js
package.json

README.md

Synopsis

revalidator-model is a simple model library based on revalidator.

stability 2 - unstable license - Unlicense Flattr this

Build Status Coverage Status Dependencies

NPM status

Install

With NPM

npm install revalidator-model

From source

git clone https://github.com/pluma/revalidator-model.git
cd revalidator-model
npm install
make test

Usage Example

var model = require('revalidator-model');
var List = model({
    properties: {
        items: {type: 'array'}
    },
    proto: {
        size: function() {
            return this.items.length;
        }
    },
    defaults: {
        flavor: 'pungent'
    },
    hydrate: {
        items: function(val) {
            return val.split(', ');
        }
    },
    dehydrate: {
        items: function(val) {
            return val.join(', ');
        }
    }
});
var list = List.hydrate({items: 'foo, bar, qux', foo: 'bar'});
console.log(list.items); // ['foo', 'bar', 'qux']
console.log(list.size()); // 3
console.log(list.flavor); // 'pungent'
console.log(list.dehydrate()); // {items: 'foo, bar, qux'}
console.log(list.validate()); // {valid: true, errors: []}
var list2 = new List({items: 5, flavor: 'spicy'});
console.log(list2.flavor); // 'spicy';
console.log(list2.items); // 5
console.log(list2.validate().valid); // false
list2.dehydrate(); // fails with error: "Object 5 has no method split."

API

model(schema:Object):Model

Creates a Model with the given revalidator schema.

In addition to the properties recognized by revalidator (properties, patternProperties, additionalProperties), the schema can have the following properties:

schema.proto:Object (optional)

The prototype instances of the Model should inherit from. Use this to specify methods you want to have access to on your model's instances.

schema.defaults:Object (optional)

Default property values to be copied to new instances of this Model. Arrays and objects will be deep-cloned.

schema.hydrate:Function (optional)

A transformation that will be applied to objects processed by your model's hydrate method.

schema.dehydrate:Function (optional)

A transformation that will be applied to model instance when processed by its dehydrate method.

new Model(data:Object):Instance

Creates a new instance with the given data. Use of the new keyword is optional.

Any properties of the given data object that are not recognized will be ignored.

Model.hydrate(data:Object):Instance

See schema.hydrate. Hydrates the object from the given data and returns a new Model instance.

Model.schema:Object

The schema that was used to create this Model.

Model.validate(data:Object):Object

Validates the given data against the Model's schema using revalidator. The result object has two attributes:

valid:Boolean

Whether the data passed validation.

errors:Array

An array of error messages if the validation failed.

Model#validate():Object

Validates the instance. Shorthand for Model.validate(instance).

Model#dehydrate():Object

See schema.dehydrate. Dehydrates the instance's data and returns it.

Unlicense

This is free and unencumbered public domain software. For more information, see http://unlicense.org/ or the accompanying UNLICENSE file.