/** * @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()); }
/** * @covers Yosmanyga\Resource\Compiler\DelegatorCompiler::compile */ public function testCurrent() { $internalCompiler1 = $this->getMock('Yosmanyga\\Resource\\Compiler\\CompilerInterface'); $internalCompiler1->expects($this->once())->method('supports')->will($this->returnValue(true)); $internalCompiler1->expects($this->once())->method('compile')->with('foo'); $compiler = new DelegatorCompiler(array($internalCompiler1)); $compiler->compile('foo'); }
/** * @param \Yosmanyga\Validation\Resource\Definition\ObjectDefinition $definition * * @return \Yosmanyga\Validation\Validator\ObjectValidator */ public function compile($definition) { $validators = array(); if (isset($definition->validators)) { if (isset($definition->validators['properties'])) { foreach ($definition->validators['properties'] as $property => $validatorDefinitions) { foreach ($validatorDefinitions as $validator) { $validators[$property][] = parent::compile($validator); } } } } return new ObjectValidator($validators); }