/** * @param mixed $data * @param \Yosmanyga\Resource\Resource $resource * * @return mixed */ public function normalize($data, Resource $resource) { $class = ''; $definitions = array(); foreach ($data['value'] as $validator) { $class = $validator['metadata']['class']; if (isset($validator['property'])) { $definitions['properties'][$validator['property']][] = $this->delegator->normalize($validator, $resource); } } return $this->createDefinition($class, $definitions); }
protected function normalizeValidators($validators, $resource) { $validatorValidator = new ExceptionValidator(new ArrayValidator(array('allowedKeys' => array('name', 'option'), 'allowExtra' => false))); if (!is_integer(key($validators))) { $validators = array($validators); } $definitions = array(); foreach ($validators as $validator) { $validatorValidator->validate($validator); $definitions[] = $this->delegator->normalize(array('value' => $validator), $resource); } return $definitions; }
/** * @covers Yosmanyga\Resource\Normalizer\YamlFileDelegatorNormalizer::supports */ public function testSupports() { $normalizer = new YamlFileDelegatorNormalizer(); // Right type $this->assertTrue($normalizer->supports(null, new Resource(array(), 'yaml'))); // Wrong type $this->assertFalse($normalizer->supports(null, new Resource(array(), 'foo'))); // No type, file metadata and right extension $extensions = array('yaml', 'yml'); foreach ($extensions as $extension) { $this->assertTrue($normalizer->supports(null, new Resource(array('file' => "foo.{$extension}")))); } // No type, file metadata and wrong extension $this->assertFalse($normalizer->supports(null, new Resource(array('file' => 'foo.bar')))); }
protected function normalizeProperties($properties, $resource) { $validatorValidator = new ExceptionValidator(new ArrayValidator(array('requiredKeys' => array('validator'), 'allowedKeys' => array('options'), 'allowExtra' => false))); $definitions = array(); foreach ($properties as $property => $validators) { foreach ($validators as $id => $validator) { if (!is_integer($id)) { $validator = array('validator' => $id, 'options' => $validator); } $validatorValidator->validate($validator); $definitions[$property][] = $this->delegator->normalize(array('key' => $validator['validator'], 'value' => $validator['options']), $resource); } } return $definitions; }