You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							30 lines
						
					
					
						
							883 B
						
					
					
				
			
		
		
	
	
							30 lines
						
					
					
						
							883 B
						
					
					
				import rules from '../rule/'; | 
						|
import { isEmptyValue } from '../util'; | 
						|
var ENUM = 'enum'; | 
						|
 | 
						|
/** | 
						|
 *  Validates an enumerable list. | 
						|
 * | 
						|
 *  @param rule The validation rule. | 
						|
 *  @param value The value of the field on the source object. | 
						|
 *  @param callback The callback function. | 
						|
 *  @param source The source object being validated. | 
						|
 *  @param options The validation options. | 
						|
 *  @param options.messages The validation messages. | 
						|
 */ | 
						|
function enumerable(rule, value, callback, source, options) { | 
						|
  var errors = []; | 
						|
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); | 
						|
  if (validate) { | 
						|
    if (isEmptyValue(value) && !rule.required) { | 
						|
      return callback(); | 
						|
    } | 
						|
    rules.required(rule, value, source, errors, options); | 
						|
    if (value) { | 
						|
      rules[ENUM](rule, value, source, errors, options); | 
						|
    } | 
						|
  } | 
						|
  callback(errors); | 
						|
} | 
						|
 | 
						|
export default enumerable; |