code: function(attributes, constraints, options) {
      options = v.extend({}, v.options, options);
  
      var results = v.runValidations(attributes, constraints, options)
        , attr
        , validator;
  
      if (results.some(function(r) { return v.isPromise(r.error); })) {
        throw new Error("Use validate.async if you want support for promises");
      }
      return validate.processValidationResults(results, options);
    }
docs: The main function that calls the validators specified by the constraints. The options are the following: - format (string) - An option that controls how the returned value is formatted * flat - Returns a flat array of just the error messages * grouped - Returns the messages grouped by attribute (default) * detailed - Returns an array of the raw validation data - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.  Please note that the options are also passed to each validator.