From 3564e305fa4465b2ea1fd31a7dc83f8cf800a8d1 Mon Sep 17 00:00:00 2001 From: Yoanm Date: Mon, 10 Apr 2023 19:07:44 +0200 Subject: [PATCH] Improve types --- src/Domain/Model/Type/ArrayDoc.php | 22 ---------------- src/Domain/Model/Type/CollectionDoc.php | 21 ++++++++++++++++ src/Infra/Normalizer/TypeDocNormalizer.php | 29 +++++++++------------- 3 files changed, 33 insertions(+), 39 deletions(-) diff --git a/src/Domain/Model/Type/ArrayDoc.php b/src/Domain/Model/Type/ArrayDoc.php index 03f0fd7..1b434e3 100644 --- a/src/Domain/Model/Type/ArrayDoc.php +++ b/src/Domain/Model/Type/ArrayDoc.php @@ -6,26 +6,4 @@ */ class ArrayDoc extends CollectionDoc { - /** @var TypeDoc|null */ - private $itemValidation = null; - - /** - * @param TypeDoc $itemValidation - * - * @return self - */ - public function setItemValidation(TypeDoc $itemValidation) : self - { - $this->itemValidation = $itemValidation; - - return $this; - } - - /** - * @return TypeDoc|null - */ - public function getItemValidation() : ?TypeDoc - { - return $this->itemValidation; - } } diff --git a/src/Domain/Model/Type/CollectionDoc.php b/src/Domain/Model/Type/CollectionDoc.php index f423656..dd13cd9 100644 --- a/src/Domain/Model/Type/CollectionDoc.php +++ b/src/Domain/Model/Type/CollectionDoc.php @@ -17,6 +17,8 @@ class CollectionDoc extends TypeDoc private $allowExtraSibling = false; /** @var bool */ private $allowMissingSibling = false; + /** @var TypeDoc|null */ + private $itemValidation = null; /** * @param TypeDoc $doc @@ -117,4 +119,23 @@ public function getSiblingList() : array { return $this->siblingList; } + /** + * @param TypeDoc $itemValidation + * + * @return self + */ + public function setItemValidation(TypeDoc $itemValidation) : self + { + $this->itemValidation = $itemValidation; + + return $this; + } + + /** + * @return TypeDoc|null + */ + public function getItemValidation() : ?TypeDoc + { + return $this->itemValidation; + } } diff --git a/src/Infra/Normalizer/TypeDocNormalizer.php b/src/Infra/Normalizer/TypeDocNormalizer.php index e19f2eb..dc453ac 100644 --- a/src/Infra/Normalizer/TypeDocNormalizer.php +++ b/src/Infra/Normalizer/TypeDocNormalizer.php @@ -22,12 +22,8 @@ class TypeDocNormalizer */ public function normalize(TypeDoc $docObject) : array { - $docArray = []; - - $docArray = $this->appendIfNotNull($docArray, 'description', $docObject->getDescription()); - $docArray = $this->appendIfNotNull($docArray, 'type', $this->normalizeSchemaType($docObject)); - - return $docArray + return $this->appendIfNotNull('description', $docObject->getDescription()) + + $this->appendIfNotNull('type', $this->normalizeSchemaType($docObject)) + [ 'nullable' => $docObject->isNullable(), 'required' => $docObject->isRequired(), @@ -62,13 +58,13 @@ protected function appendMinMax(TypeDoc $docObject) : array { $docArray = []; if ($docObject instanceof StringDoc) { - $docArray = $this->appendIfNotNull($docArray, 'minLength', $docObject->getMinLength()); - $docArray = $this->appendIfNotNull($docArray, 'maxLength', $docObject->getMaxLength()); + $docArray += $this->appendIfNotNull('minLength', $docObject->getMinLength()); + $docArray += $this->appendIfNotNull('maxLength', $docObject->getMaxLength()); } elseif ($docObject instanceof CollectionDoc) { - $docArray = $this->appendIfNotNull($docArray, 'minItem', $docObject->getMinItem()); - $docArray = $this->appendIfNotNull($docArray, 'maxItem', $docObject->getMaxItem()); + $docArray += $this->appendIfNotNull('minItem', $docObject->getMinItem()); + $docArray += $this->appendIfNotNull('maxItem', $docObject->getMaxItem()); } elseif ($docObject instanceof NumberDoc) { - return $this->appendNumberMinMax($docObject); + $docArray = $this->appendNumberMinMax($docObject); } return $docArray; @@ -109,12 +105,11 @@ protected function appendCollectionDoc(TypeDoc $docObject) : array */ protected function appendMisc(TypeDoc $docObject) : array { - $docArray = []; - $docArray = $this->appendIfNotNull($docArray, 'default', $docObject->getDefault()); - $docArray = $this->appendIfNotNull($docArray, 'example', $docObject->getExample()); + $docArray = $this->appendIfNotNull('default', $docObject->getDefault()); + $docArray += $this->appendIfNotNull('example', $docObject->getExample()); if ($docObject instanceof StringDoc) { - $docArray = $this->appendIfNotNull($docArray, 'format', $docObject->getFormat()); + $docArray += $this->appendIfNotNull('format', $docObject->getFormat()); } elseif ($docObject instanceof ArrayDoc && null !== $docObject->getItemValidation()) { $docArray['item_validation'] = $this->normalize($docObject->getItemValidation()); } @@ -188,13 +183,13 @@ private function appendNumberMinMax(NumberDoc $docObject) : array } /** - * @param array $docArray * @param string $key * @param mixed $value + * @param array $docArray * * @return array */ - private function appendIfNotNull(array $docArray, string $key, $value) : array + private function appendIfNotNull(string $key, $value, array $docArray = []) : array { if (null !== $value) { $docArray[$key] = $value;