Class: StringNode

StringNode

new StringNode(){StringNode}

The StringNode class represents a value that a string

Returns:
StringNode instance.

Methods

addCustomValidator(node){StringNode}

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,
  StringNode = require('vitesse').StringNode,
  CustomNode = require('../lib/custom');

var customValidator = new CustomNode()
  .setContext({regexp: /^[0-9]+$/ })
  .setValidator(function(object, context) {
    if(!context.regexp.test(object)) {
      return new Error('failed regular expression ' + context.regexp.toString());
    }
  });

var schema = new StringNode(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 string', results[0].message);
assert.deepEqual(['object'], results[0].path);
assert.ok(results[0].rule === schema);

// Validate ''
var results = func.validate('');
assert.equal(1, results.length);
assert.equal('failed regular expression /^[0-9]+$/', results[0].message);
assert.deepEqual(['object'], results[0].path);
assert.ok(results[0].rule === customValidator);

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

addValidation(validation){StringNode}

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}
  • $regexp regular expression match {$regexp: /^[0-9]+$/}
  • $in string must be in provided values {$in: ['dog', 'cat', 'hamster']}
  • $format string must match one of the following formats

    • date-time - validates a date-time string
    • date - validates a date string
    • time - validates a time string
    • email - validates email addresses
    • ipv4 - validates IP4 addresses
    • ipv6 - validates IP6 addresses
    • uri - validates URI strings
    • color - validates basic HTML colors
    • hostname - validate hostnames
    • alpha - validate string containing only a-Z characters
    • alphanumeric - validate string containing only numbers
    • style - validate css style
    • phone - validate phone number
    • regexp - validate if string is a valid RegExp
Name Type Description
validation object

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

Examples
// Create a String validator for strings of length greater or equal to 5
// and less or equal than 100 characters

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

var schema = new StringNode(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 string', results[0].message);
assert.deepEqual(['object'], results[0].path);
assert.ok(results[0].rule === schema);

// Validate ''
var results = func.validate('');
assert.equal(1, results.length);
assert.equal('string 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('xxxxxx');
assert.equal(0, results.length);
// Create a String validator for date strings

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

var schema = new StringNode(null, null, {typeCheck:true})
  .addValidation({$format: 'date'});

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 string', results[0].message);
assert.deepEqual(['object'], results[0].path);
assert.ok(results[0].rule === schema);

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

// Validate string 'xxxxxx'
var results = func.validate('2015-09-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){StringNode}

Type check value

Name Type Description
typeCheck boolean

type check value

comments powered by Disqus