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 formatsdate-time
- validates a date-time stringdate
- validates a date stringtime
- validates a time stringemail
- validates email addressesipv4
- validates IP4 addressesipv6
- validates IP6 addressesuri
- validates URI stringscolor
- validates basic HTML colorshostname
- validate hostnamesalpha
- validate string containing only a-Z charactersalphanumeric
- validate string containing only numbersstyle
- validate css stylephone
- validate phone numberregexp
- 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