public function is()
{
$args = func_get_args();
// If only first argument is specified, then it's array of rulesets.
// We will call ourselves with every element.
if (count($args) == 1 && is_array($args[0])) {
foreach ($args[0] as $ruleset) {
// $ruleset here is either array or string with pipes
if (!is_array($ruleset)) {
$ruleset = array($ruleset);
}
call_user_func_array(array($this, 'is'), $ruleset);
}
return $this;
}
// If ruleset is specified as a string, we need to expand it
// into an array.
if (count($args) == 1) {
list($field_definition, $rules) = $this->normalizeRules($args[0]);
} else {
$rules = $args;
$field_definition = array_shift($rules);
}
// Convert field defintion into list of fields
$fields = $this->expandFieldDefinition($field_definition, $rules);
// Save rules for each field
foreach ($fields as $field) {
$this->rules[$field][] = $rules;
}
return $this;
}