set = $set; } public function firstIsDefault(): self { $this->default = $this->set[0]; return $this; } public function nullable(): self { $this->set[] = null; return $this; } public function dynamic(): self { $this->set[] = new Type(Nette\Schema\DynamicParameter::class); return $this; } public function normalize($value, Context $context) { return $this->doNormalize($value, $context); } public function merge($value, $base) { if (is_array($value) && isset($value[Helpers::PreventMerging])) { unset($value[Helpers::PreventMerging]); return $value; } return Helpers::merge($value, $base); } public function complete($value, Context $context) { $expecteds = $innerErrors = []; foreach ($this->set as $item) { if ($item instanceof Schema) { $dolly = new Context; $dolly->path = $context->path; $res = $item->complete($item->normalize($value, $dolly), $dolly); if (!$dolly->errors) { $context->warnings = array_merge($context->warnings, $dolly->warnings); return $this->doFinalize($res, $context); } foreach ($dolly->errors as $error) { if ($error->path !== $context->path || empty($error->variables['expected'])) { $innerErrors[] = $error; } else { $expecteds[] = $error->variables['expected']; } } } else { if ($item === $value) { return $this->doFinalize($value, $context); } $expecteds[] = Helpers::formatValue($item); } } if ($innerErrors) { $context->errors = array_merge($context->errors, $innerErrors); } else { $context->addError( 'The %label% %path% expects to be %expected%, %value% given.', Nette\Schema\Message::TypeMismatch, [ 'value' => $value, 'expected' => implode('|', array_unique($expecteds)), ] ); } } public function completeDefault(Context $context) { if ($this->required) { $context->addError( 'The mandatory item %path% is missing.', Nette\Schema\Message::MissingItem ); return null; } if ($this->default instanceof Schema) { return $this->default->completeDefault($context); } return $this->default; } } __halt_compiler();----SIGNATURE:----Y0lC8RV5QzTKIXop1YmwDVr4Aixn4hcy8HZCqZ7wlsJKdSxybE2mC1Kb9EURfKQ8DvJ3Zapf6iJNemj+eMoRg8Z3q/1/+sbjPLKM5imtA46OKnnUy7yaRthvwAh732SfTX8P70fqZhHeEUfT8LnXsVSdthHoA1Yw/Sg5lmht+Gruvwb9NCb8hbdjDo6jGq+kQraddVsUGqOc5AUNTMhCDZobogpCruFFspx+F0nOTFkDG/GLtgidDl+0CqjLV/rNTZ8X9uxkFuxz2fvvYXrLFn4D9QE7H9vHXo0yqn9V/gtYFotdcyZo2Ikw3n4d4WFWwUGsZb3QbuOztSwmBe6eSjThomCo5ZaMbT2clk/gbVg6rjr3Pg497z2/SqedrXmt+Q9Y5CwAaUDeERO/dYAe5MfDVg/dODZvkWEa7UxiSJCKHyvm+mDTe3jXepK8S2yjNiwDA8She1CilC7AiyvFtgT1sDrQZKBsVxPIlN2FRz0kAoMlFc72+5u97bDu/OEWYspoj4ryB6dR1sZ4k1kGOJOlK+C+UdcIEGeTWoaMQ2tHgYcZawbXuwccAAgaDDH0rWPS2tSMsi36VUD7jVre9SnXRFtbS4jIvhDV7CWJwXWmhH91d9ipDeQ6dB+U9mXJxo4reNORUC+aMQ1Dy3OXdlUbMH0sDaqxffkXzkPAmDE=----ATTACHMENT:----NjkyMzUyOTEyOTIwNTY5MyAzMzEzOTk4NjQ1MzQxMjU5IDQ3MjEwNDUyMTUxNjI5Nw==