UNPKG

express-form2

Version:

Form validation and data filtering for Express

77 lines (61 loc) 1.77 kB
var utils = require( './utils' ); var validator = require( 'validator' ); var FilterPrototype = validator.Filter.prototype; var externalFilter = new validator.Filter(); var filters = {}; Object.keys( FilterPrototype ).forEach( function ( name ){ if( name.match( /^ifNull$/ )) return; filters[ name ] = function (){ var args = arguments; return this.add( function ( val ){ return FilterPrototype[ name ]. apply( externalFilter.sanitize( val ), args ); }); }; }); filters.ifNull = function ( replacement ){ return this.add( function ( val ){ return ( utils.typeof( val ) === 'undefined' || val === null || val === '' ) ? replacement : val; }); }; filters.toUpper = filters.toUpperCase = function (){ return this.add( function ( val ){ return val.toUpperCase(); }); }; filters.toLower = filters.toLowerCase = function (){ return this.add( function ( val ){ return val.toLowerCase(); }); }; filters.truncate = function ( len ){ return this.add( function ( val ){ if( val.length <= len ) return val; if( len <= 3 ) return '...'; if( val.length > len - 3 ){ return val.substr( 0, len - 3 ) + '...'; } return val; }); }; filters.toArray = function (){ this.__isArray = true; this.__forceArray = true; return this; }; filters.custom = function ( func, msg ){ var self = this; return this.add( function ( val, src ){ try{ var result = func( val, src ); }catch( e ){ return { error : msg || e.message || self.msg.custom }; } // Functions that return values are filters. if( result != null ) return result; return { valid : true }; }); } module.exports = filters;