Class: NumberNode

NumberNode

new NumberNode(){NumberNode}

The NumberNode class represents a value that can be anything

Returns:
NumberNode instance.

Methods

addCustomValidator(node){NumberNode}

Add a custom object validator

Name Type Description
node CustomNode

custom validation node to be used for this field validation

Example
// Create a Custom validator

assert = require('assert'),
  Compiler = require('vitesse').Compiler,
  NumberNode = require('vitesse').NumberNode,
  CustomNode = require('../lib/custom');

var customValidator = new CustomNode()
  .setContext({divisibleBy: 10})
  .setValidator(function(object, context) {
    if((object % context.divisibleBy) != 0) {
      return new Error('number not divisible by ' + context.divisibleBy);
    }
  });

var schema = new NumberNode(null, null, {typeCheck:true})
  .addCustomValidator(customValidator);

var compiler = new Compiler({});
// Compile the AST
var func = compiler.compile(schema, {});

// Validate {}
var results = func.validate({});
assert.equal(1, results.length);
assert.equal('field is not a number', results[0].message);
assert.deepEqual(['object'], results[0].path);
assert.ok(results[0].rule === schema);

// Validate ''
var results = func.validate(7);
assert.equal(1, results.length);
assert.equal('number not divisible by 10', results[0].message);
assert.deepEqual(['object'], results[0].path);
assert.ok(results[0].rule === customValidator);

// Validate string 'xxxxxx'
var results = func.validate(10);
assert.equal(0, results.length);

addValidation(validation){NumberNode}

Add a validation language node, valid nodes are

  • $gt greater than {$gt: 5}
  • $gte greater or equal to {$gte: 10}
  • $lt less than {$lt: 5}
  • $lte less or equal to {$lte: 5}
  • $in string must be in provided values {$in: ['dog', 'cat', 'hamster']}
  • $multipleOf number must be a multiple of the value {$multipleOf: 5}
Name Type Description
validation object

validation operation valid ones are $gt,$gte,$lt,$lte,$multipleOf,$in

Example
// Create a NumberNode validator for integers greater or equal to 5
// and less or equal to 100.

assert = require('assert'),
  Compiler = require('vitesse').Compiler,
  NumberNode = require('vitesse').NumberNode;

var schema = new NumberNode(null, null, {typeCheck:true})
  .addValidation({$gte: 5, $lte: 100});

var compiler = new Compiler({});
// Compile the AST
var func = compiler.compile(schema, {});

// Validate {}
var results = func.validate({});
assert.equal(1, results.length);
assert.equal('field is not a number', results[0].message);
assert.deepEqual(['object'], results[0].path);
assert.ok(results[0].rule === schema);

// Validate ''
var results = func.validate(1);
assert.equal(1, results.length);
assert.equal('number fails validation {"$gte":5,"$lte":100}', results[0].message);
assert.deepEqual(['object'], results[0].path);
assert.ok(results[0].rule === schema);

// Validate string 'xxxxxx'
var results = func.validate(10);
assert.equal(0, results.length);

generate(context)

Generate the code for this node

Name Type Description
context object

the generation context for this node

path(){array}

Return the current object path

Returns:
array containing the path to this node

setTypeCheck(typeCheck){NumberNode}

Type check value

Name Type Description
typeCheck boolean

type check value

comments powered by Disqus