/** * {@inheritdoc} */ public function normalize($data, Resource $resource) { if (isset($data['value']['option'])) { $data['value'] = $this->xmlKit->extractContent($data['value']['option']); } if (isset($data['value']['map'])) { $data['value']['map'] = $this->normalizer->normalize(array('value' => $data['value']['map']), $resource); } $definition = new ArrayDefinition(); $definition->import($data['value']); return $definition; }
/** * @param \Yosmanyga\Validation\Resource\Definition\ArrayDefinition $definition * * @return \Yosmanyga\Validation\Validator\ArrayValidator */ public function compile($definition) { $validator = new ExceptionValidator($definition->createValidator()); $validator->validate($definition); // Try to compile map option // Just works if map is a validator try { $definition->map = $this->compiler->compile($definition->map); } catch (\RuntimeException $e) { // Ignore it if fails // Map could be a closure or anything else callable } return new ArrayValidator($definition->export()); }
public function testCreateValidator() { $definition = new ArrayDefinition(); $this->assertInstanceOf('\\Yosmanyga\\Validation\\Validator\\ObjectValidator', $definition->createValidator()); }
/** * @covers Yosmanyga\Validation\Resource\Compiler\ArrayCompiler::compile */ public function testCompile() { $compiler = new ArrayCompiler(); $definition = new ArrayDefinition(); $this->assertEquals(new ArrayValidator($definition->export()), $compiler->compile($definition)); }
/** * @param array $data * * @return \Yosmanyga\Validation\Resource\Definition\ExpressionDefinition */ protected function createDefinition($data) { $definition = new ArrayDefinition(); $definition->import($data); return $definition; }