protected function _operator($model, $key, $op, $value, $schema) {
$castOpts = compact('schema') + array('first' => true, 'arrays' => false);
switch (true) {
case !isset($this->_operators[$op]):
return array($op => $this->cast($model, array($key => $value), $castOpts));
case is_callable($this->_operators[$op]):
return $this->_operators[$op]($key, $value);
case is_array($this->_operators[$op]):
$format = (is_array($value)) ? 'multiple' : 'single';
$operator = $this->_operators[$op][$format];
break;
default:
$operator = $this->_operators[$op];
break;
}
return array($operator => $value);
}