text: /**
   * Module dependencies
   */
  
  var _ = require('@sailshq/lodash');
  var match = require('./lib/match');
  
  
  /**
   * Public access
   */
  
  module.exports = function (entity, ruleset) {
  
    var errors = [];
  
    // If ruleset doesn't contain any explicit rule keys,
    // assume that this is a type
  
    // Look for explicit rules
    for (var rule in ruleset) {
  
  
      // TODO: In next major version, remove this: It should definitely not be here.
      // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      // Normalize the value if it looks like a boolean
      if(ruleset[rule] === 'true') {
        ruleset[rule] = true;
      }
  
      if(ruleset[rule] === 'false') {
        ruleset[rule] = false;
      }
      // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  
      // If the value is false, then we shouldn't even run the validation
      if(ruleset[rule] === false) {
        break;
      }
  
      // If the rule value is a boolean we don't need to pass the value along.
      // Otherwise we can pass it along so it's options are available in
      // the validation.
      var ruleVal = _.isBoolean(ruleset[rule]) ? undefined : ruleset[rule];
      errors = errors.concat(match(entity, rule, ruleVal));
  
    }
  
    // If errors exist, return the list of them
    if (errors.length) {
      return errors;
    }
  
    // No errors, so return false
    else {
      return [];
    }
  
  };
  
  