From 62269ddcc6a65a17a769446ae87fa104fab263ba Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Fri, 27 Oct 2023 17:54:47 +0200 Subject: [PATCH] Break down complex helper method This method is quite complex due to it's many conditionals. Extracting helpers with describing names makes the code easier to read, maintain, and understand. --- .../Factories/NavigationDataFactory.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/framework/src/Framework/Factories/NavigationDataFactory.php b/packages/framework/src/Framework/Factories/NavigationDataFactory.php index 0a4a90a48c4..3c8267f8f75 100644 --- a/packages/framework/src/Framework/Factories/NavigationDataFactory.php +++ b/packages/framework/src/Framework/Factories/NavigationDataFactory.php @@ -89,9 +89,8 @@ protected function makeHidden(): bool { return $this->isInstanceOf(MarkdownPost::class) || $this->searchForHiddenInFrontMatter() - || in_array($this->routeKey, Config::getArray('hyde.navigation.exclude', ['404'])) - || (! $this->isInstanceOf(DocumentationPage::class) && $this->pageIsInSubdirectory() && ($this->getSubdirectoryConfiguration() === 'hidden')) - && (basename($this->identifier) !== 'index'); + || $this->isPageHiddenInNavigationConfiguration() + || $this->isNonDocumentationPageInHiddenSubdirectory(); } protected function makePriority(): int @@ -119,6 +118,19 @@ private function searchForHiddenInFrontMatter(): ?bool ?? $this->invert($this->getMatter('navigation.visible')); } + private function isPageHiddenInNavigationConfiguration(): ?bool + { + return in_array($this->routeKey, Config::getArray('hyde.navigation.exclude', ['404'])); + } + + private function isNonDocumentationPageInHiddenSubdirectory(): bool + { + return ! $this->isInstanceOf(DocumentationPage::class) + && $this->pageIsInSubdirectory() + && $this->getSubdirectoryConfiguration() === 'hidden' + && basename($this->identifier) !== 'index'; + } + private function searchForPriorityInFrontMatter(): ?int { return $this->getMatter('navigation.priority')