/** * @param \Nette\Reflection\Property * @return Builder\Metadata|null */ private function processProperty(\Nette\Reflection\Property $property) { if (!$property->hasAnnotation('Input')) { return; } $input = $property->getAnnotation('Input'); $meta = new Builder\Metadata(); $meta->name = $property->getName(); $meta->getter = 'get' . ucfirst($meta->name); $meta->setter = 'set' . ucfirst($meta->name); if ($input instanceof \ArrayObject) { $input = (array) $input; foreach ($input as $name => $value) { switch ($name) { case 'label': case 'type': case 'getter': case 'setter': $meta->{$name} = $value; unset($input[$name]); break; case 'required': case 'minLength': case 'maxLength': case 'min': case 'max': $meta->conditions[$name] = $value; unset($input[$name]); break; default: break; } } $meta->custom = $input; } return $meta; }