From 4777e4c8c38cdb15218f3f377d99f4355eef0989 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 16:04:16 +0200 Subject: [PATCH 01/37] Deprecate PageParsers --- packages/framework/src/Contracts/AbstractPage.php | 8 ++++++-- packages/framework/src/Contracts/AbstractPageParser.php | 2 ++ packages/framework/src/Contracts/PageParserContract.php | 3 +++ .../src/Models/Parsers/DocumentationPageParser.php | 2 ++ .../framework/src/Models/Parsers/MarkdownPageParser.php | 2 ++ .../framework/src/Models/Parsers/MarkdownPostParser.php | 3 +++ 6 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/framework/src/Contracts/AbstractPage.php b/packages/framework/src/Contracts/AbstractPage.php index b7432a594cb..7679149b0b5 100644 --- a/packages/framework/src/Contracts/AbstractPage.php +++ b/packages/framework/src/Contracts/AbstractPage.php @@ -27,6 +27,10 @@ abstract class AbstractPage implements PageContract, CompilableContract public static string $sourceDirectory; public static string $outputDirectory; public static string $fileExtension; + + /** + * @deprecated + */ public static string $parserClass; public static string $template; @@ -48,13 +52,13 @@ final public static function getFileExtension(): string return '.'.ltrim(static::$fileExtension, '.'); } - /** @inheritDoc */ + /** @deprecated */ final public static function getParserClass(): string { return static::$parserClass; } - /** @inheritDoc */ + /** @deprecated */ public static function getParser(string $slug): PageParserContract { return new static::$parserClass($slug); diff --git a/packages/framework/src/Contracts/AbstractPageParser.php b/packages/framework/src/Contracts/AbstractPageParser.php index 8530ff6740f..84e16905858 100644 --- a/packages/framework/src/Contracts/AbstractPageParser.php +++ b/packages/framework/src/Contracts/AbstractPageParser.php @@ -14,6 +14,8 @@ * * To ensure that all page parsing jobs are handled consistently, * all page parsers should extend this class. + * + * @deprecated v0.56.0-beta */ abstract class AbstractPageParser implements PageParserContract { diff --git a/packages/framework/src/Contracts/PageParserContract.php b/packages/framework/src/Contracts/PageParserContract.php index 4e2b7bc2103..013b4e76156 100644 --- a/packages/framework/src/Contracts/PageParserContract.php +++ b/packages/framework/src/Contracts/PageParserContract.php @@ -2,6 +2,9 @@ namespace Hyde\Framework\Contracts; +/** + * @deprecated v0.56.0-beta + */ interface PageParserContract { /** diff --git a/packages/framework/src/Models/Parsers/DocumentationPageParser.php b/packages/framework/src/Models/Parsers/DocumentationPageParser.php index b30f1c7ed4c..38f2e1040d4 100644 --- a/packages/framework/src/Models/Parsers/DocumentationPageParser.php +++ b/packages/framework/src/Models/Parsers/DocumentationPageParser.php @@ -14,6 +14,8 @@ * If the file is in a subdirectory relative to the base source directory (default _docs), * the subdirectory name will be used as the page's category. This only works for one level, * and the resulting file will still be put in the root of the docs output directory. + * + * @deprecated v0.56.0-beta */ class DocumentationPageParser extends AbstractPageParser { diff --git a/packages/framework/src/Models/Parsers/MarkdownPageParser.php b/packages/framework/src/Models/Parsers/MarkdownPageParser.php index 10206a30479..152e4063b4d 100644 --- a/packages/framework/src/Models/Parsers/MarkdownPageParser.php +++ b/packages/framework/src/Models/Parsers/MarkdownPageParser.php @@ -10,6 +10,8 @@ /** * Parses a Markdown file into a MarkdownPage object using the MarkdownPage intermediary. * + * @deprecated v0.56.0-beta + * * @todo Refactor to use dynamic path and extension resolvers */ class MarkdownPageParser extends AbstractPageParser diff --git a/packages/framework/src/Models/Parsers/MarkdownPostParser.php b/packages/framework/src/Models/Parsers/MarkdownPostParser.php index 9ed92c12fbf..6d5384f3253 100644 --- a/packages/framework/src/Models/Parsers/MarkdownPostParser.php +++ b/packages/framework/src/Models/Parsers/MarkdownPostParser.php @@ -7,6 +7,9 @@ use Hyde\Framework\Models\Pages\MarkdownPost; use Hyde\Framework\Modules\Markdown\MarkdownFileParser; +/** + * @deprecated v0.56.0-beta + */ class MarkdownPostParser extends AbstractPageParser { protected string $pageModel = MarkdownPost::class; From b3e2379a40fe6ee042304bb63efbd31d6137cacd Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 16:10:49 +0200 Subject: [PATCH 02/37] Create SourceFileParser.php --- .../framework/src/Actions/SourceFileParser.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 packages/framework/src/Actions/SourceFileParser.php diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php new file mode 100644 index 00000000000..105c89c6f00 --- /dev/null +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -0,0 +1,14 @@ + Date: Tue, 2 Aug 2022 16:11:01 +0200 Subject: [PATCH 03/37] Replace parser class with new action --- packages/framework/src/Contracts/AbstractPage.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/framework/src/Contracts/AbstractPage.php b/packages/framework/src/Contracts/AbstractPage.php index 7679149b0b5..b195d06bf73 100644 --- a/packages/framework/src/Contracts/AbstractPage.php +++ b/packages/framework/src/Contracts/AbstractPage.php @@ -2,6 +2,7 @@ namespace Hyde\Framework\Contracts; +use Hyde\Framework\Actions\SourceFileParser; use Hyde\Framework\Concerns\CanBeInNavigation; use Hyde\Framework\Concerns\HasPageMetadata; use Hyde\Framework\Models\Route; @@ -67,7 +68,7 @@ public static function getParser(string $slug): PageParserContract /** @inheritDoc */ public static function parse(string $slug): static { - return (new static::$parserClass($slug))->get(); + return (new SourceFileParser(static::class, $slug))->get(); } /** @inheritDoc */ From 224047c1a87a760e7aca84b228ca8df6b9f25891 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 16:12:22 +0200 Subject: [PATCH 04/37] Add method stubs --- packages/framework/src/Actions/SourceFileParser.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 105c89c6f00..f4d3bf68e61 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -2,13 +2,25 @@ namespace Hyde\Framework\Actions; +use Hyde\Framework\Contracts\PageContract; + /** * Parses a source file and returns a new page model instance for it. */ class SourceFileParser { public function __construct(protected string $model, protected string $slug) + { + $this->parse(); + } + + public function parse(): void { // } + + public function get(): PageContract + { + return new $this->model($this->slug); + } } From 95d3a26ad5b1cdb330deb9a30002e312423995ba Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 16:13:19 +0200 Subject: [PATCH 05/37] Validate file existence --- packages/framework/src/Actions/SourceFileParser.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index f4d3bf68e61..9708c2e8563 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -2,6 +2,7 @@ namespace Hyde\Framework\Actions; +use Hyde\Framework\Concerns\ValidatesExistence; use Hyde\Framework\Contracts\PageContract; /** @@ -9,8 +10,12 @@ */ class SourceFileParser { + use ValidatesExistence; + public function __construct(protected string $model, protected string $slug) { + $this->validateExistence($model, $slug); + $this->parse(); } From 37d1ac354cfb4a78b9a652ddeab79ea111fcea95 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 16:18:24 +0200 Subject: [PATCH 06/37] Replace static return value with contract --- packages/framework/src/Contracts/AbstractPage.php | 2 +- packages/framework/src/Contracts/PageContract.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/framework/src/Contracts/AbstractPage.php b/packages/framework/src/Contracts/AbstractPage.php index b195d06bf73..211b364f0e2 100644 --- a/packages/framework/src/Contracts/AbstractPage.php +++ b/packages/framework/src/Contracts/AbstractPage.php @@ -66,7 +66,7 @@ public static function getParser(string $slug): PageParserContract } /** @inheritDoc */ - public static function parse(string $slug): static + public static function parse(string $slug): PageContract { return (new SourceFileParser(static::class, $slug))->get(); } diff --git a/packages/framework/src/Contracts/PageContract.php b/packages/framework/src/Contracts/PageContract.php index 2eaddaf70ad..4fc93bf2163 100644 --- a/packages/framework/src/Contracts/PageContract.php +++ b/packages/framework/src/Contracts/PageContract.php @@ -48,7 +48,7 @@ public static function getParser(string $slug): PageParserContract; * * @see \Hyde\Framework\Testing\Unit\PageModelParseHelperTest */ - public static function parse(string $slug): static; + public static function parse(string $slug): PageContract; /** * Get an array of all the source file slugs for the model. From aa98fd9478184a90114716d0b2b67536a7b64b6e Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 17:53:44 +0200 Subject: [PATCH 07/37] Create SourceFileParserTest.php --- .../tests/Feature/SourceFileParserTest.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 packages/framework/tests/Feature/SourceFileParserTest.php diff --git a/packages/framework/tests/Feature/SourceFileParserTest.php b/packages/framework/tests/Feature/SourceFileParserTest.php new file mode 100644 index 00000000000..e73e28352e2 --- /dev/null +++ b/packages/framework/tests/Feature/SourceFileParserTest.php @@ -0,0 +1,14 @@ + Date: Tue, 2 Aug 2022 17:53:49 +0200 Subject: [PATCH 08/37] Link to the test --- packages/framework/src/Actions/SourceFileParser.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 9708c2e8563..798749694a0 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -7,6 +7,8 @@ /** * Parses a source file and returns a new page model instance for it. + * + * @see \Hyde\Framework\Testing\Feature\SourceFileParserTest */ class SourceFileParser { From 0643c166bee0a041fbc6ee95813691f4fec22542 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 18:08:24 +0200 Subject: [PATCH 09/37] Add helpers to create temporary files --- packages/testing/src/TestCase.php | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/packages/testing/src/TestCase.php b/packages/testing/src/TestCase.php index 97eaac70141..e8c55bfb526 100644 --- a/packages/testing/src/TestCase.php +++ b/packages/testing/src/TestCase.php @@ -2,7 +2,9 @@ namespace Hyde\Testing; +use Hyde\Framework\Actions\ConvertsArrayToFrontMatter; use Hyde\Framework\Contracts\PageContract; +use Hyde\Framework\Hyde; use Hyde\Framework\Models\Pages\MarkdownPage; use Hyde\Framework\Models\Route; use LaravelZero\Framework\Testing\TestCase as BaseTestCase; @@ -16,6 +18,8 @@ abstract class TestCase extends BaseTestCase protected static bool $booted = false; + protected array $fileMemory = []; + /** * Setup the test environment. * @@ -39,6 +43,11 @@ protected function setUp(): void */ protected function tearDown(): void { + if (sizeof($this->fileMemory) > 0) { + Hyde::unlink($this->fileMemory); + $this->fileMemory = []; + } + parent::tearDown(); } @@ -60,4 +69,27 @@ protected function mockCurrentPage(string $currentPage) { view()->share('currentPage', $currentPage); } + + /** + * Create a temporary file in the project directory. + * The TestCase will automatically remove the file when the test is completed. + */ + protected function file(string $path, ?string $contents = null): void + { + if ($contents) { + file_put_contents(Hyde::path($path), $contents); + } else { + Hyde::touch($path); + } + + $this->fileMemory[] = $path; + } + + /** + * Create a temporary Markdown+FrontMatter file in the project directory. + */ + protected function markdown(string $path, string $contents = '', array $matter = []): void + { + $this->file($path, (new ConvertsArrayToFrontMatter())->execute($matter) . $contents); + } } From 624440029702f1f919a2869039e74200305636ca Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 18:19:38 +0200 Subject: [PATCH 10/37] Add constructor type annotations --- packages/framework/src/Actions/SourceFileParser.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 798749694a0..79f5765f42d 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -14,6 +14,11 @@ class SourceFileParser { use ValidatesExistence; + /** + * @param string $model + * @param string $slug + * @throws \Hyde\Framework\Exceptions\FileNotFoundException + */ public function __construct(protected string $model, protected string $slug) { $this->validateExistence($model, $slug); From 8f0fbb298bc27b92445f21a380d1767cf0a21ad7 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 18:20:02 +0200 Subject: [PATCH 11/37] Replace prompted arguments with traditional property declarations --- packages/framework/src/Actions/SourceFileParser.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 79f5765f42d..4f093503310 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -14,13 +14,18 @@ class SourceFileParser { use ValidatesExistence; + protected string $model; + protected string $slug; + /** * @param string $model * @param string $slug * @throws \Hyde\Framework\Exceptions\FileNotFoundException */ - public function __construct(protected string $model, protected string $slug) + public function __construct(string $model, string $slug) { + $this->slug = $slug; + $this->model = $model; $this->validateExistence($model, $slug); $this->parse(); From b495676dd7e6db15917500b776713dc5bdad9057 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 18:26:50 +0200 Subject: [PATCH 12/37] Annotate class-string --- packages/framework/src/Actions/SourceFileParser.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 4f093503310..7000ef0e783 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -14,11 +14,12 @@ class SourceFileParser { use ValidatesExistence; + /** @var class-string */ protected string $model; protected string $slug; /** - * @param string $model + * @param class-string $model * @param string $slug * @throws \Hyde\Framework\Exceptions\FileNotFoundException */ From 1eba8815f7c85e6a6664167eecaeb120d866694b Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 18:28:57 +0200 Subject: [PATCH 13/37] Change property name to be more descriptive --- packages/framework/src/Actions/SourceFileParser.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 7000ef0e783..025f47a671b 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -15,19 +15,19 @@ class SourceFileParser use ValidatesExistence; /** @var class-string */ - protected string $model; + protected string $pageClass; protected string $slug; /** - * @param class-string $model + * @param class-string $pageClass * @param string $slug * @throws \Hyde\Framework\Exceptions\FileNotFoundException */ - public function __construct(string $model, string $slug) + public function __construct(string $pageClass, string $slug) { $this->slug = $slug; - $this->model = $model; - $this->validateExistence($model, $slug); + $this->pageClass = $pageClass; + $this->validateExistence($pageClass, $slug); $this->parse(); } @@ -39,6 +39,6 @@ public function parse(): void public function get(): PageContract { - return new $this->model($this->slug); + return new $this->pageClass($this->slug); } } From 164b89ec09729e979d67d23c0a3c019bbbcc9fa7 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 18:55:39 +0200 Subject: [PATCH 14/37] Delete MarkdownPageContract --- .../src/Contracts/AbstractMarkdownPage.php | 2 +- .../src/Contracts/MarkdownPageContract.php | 15 --------------- 2 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 packages/framework/src/Contracts/MarkdownPageContract.php diff --git a/packages/framework/src/Contracts/AbstractMarkdownPage.php b/packages/framework/src/Contracts/AbstractMarkdownPage.php index 068c0ad9746..12cf1419e41 100644 --- a/packages/framework/src/Contracts/AbstractMarkdownPage.php +++ b/packages/framework/src/Contracts/AbstractMarkdownPage.php @@ -20,7 +20,7 @@ * * @test \Hyde\Framework\Testing\Feature\AbstractPageTest */ -abstract class AbstractMarkdownPage extends AbstractPage implements MarkdownPageContract +abstract class AbstractMarkdownPage extends AbstractPage { use HasDynamicTitle; diff --git a/packages/framework/src/Contracts/MarkdownPageContract.php b/packages/framework/src/Contracts/MarkdownPageContract.php deleted file mode 100644 index d5cf16e60ea..00000000000 --- a/packages/framework/src/Contracts/MarkdownPageContract.php +++ /dev/null @@ -1,15 +0,0 @@ - Date: Tue, 2 Aug 2022 18:57:41 +0200 Subject: [PATCH 15/37] Remove premature abstraction --- .../framework/src/Actions/SourceFileParser.php | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 025f47a671b..532fdbca783 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -14,31 +14,17 @@ class SourceFileParser { use ValidatesExistence; - /** @var class-string */ - protected string $pageClass; - protected string $slug; + protected PageContract $page; - /** - * @param class-string $pageClass - * @param string $slug - * @throws \Hyde\Framework\Exceptions\FileNotFoundException - */ public function __construct(string $pageClass, string $slug) { - $this->slug = $slug; - $this->pageClass = $pageClass; $this->validateExistence($pageClass, $slug); - $this->parse(); - } - - public function parse(): void - { // } public function get(): PageContract { - return new $this->pageClass($this->slug); + return $this->page; } } From b18ba07a19b9f286a20dc2d89beef0ba93dd8ac2 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 19:11:29 +0200 Subject: [PATCH 16/37] Deprecate HasDynamicTitle --- packages/framework/src/Concerns/HasDynamicTitle.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/framework/src/Concerns/HasDynamicTitle.php b/packages/framework/src/Concerns/HasDynamicTitle.php index 7afeb7e105c..ed576ddb5b6 100644 --- a/packages/framework/src/Concerns/HasDynamicTitle.php +++ b/packages/framework/src/Concerns/HasDynamicTitle.php @@ -10,6 +10,8 @@ * First check the front matter for a title. If one is not found, * it searches the Markdown for a level one heading. Falls back to * generating a title from the slug if no other title could be found. + * + * @deprecated Move to action to generate when constructing a page. */ trait HasDynamicTitle { From f9b5cfda07a7149ebe946927e09b0c44743b6dc9 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 19:11:53 +0200 Subject: [PATCH 17/37] Merge parsers into parser action --- .../src/Actions/SourceFileParser.php | 69 ++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 532fdbca783..8e1ccf8b4ee 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -4,6 +4,13 @@ use Hyde\Framework\Concerns\ValidatesExistence; use Hyde\Framework\Contracts\PageContract; +use Hyde\Framework\Hyde; +use Hyde\Framework\Models\Pages\BladePage; +use Hyde\Framework\Models\Pages\DocumentationPage; +use Hyde\Framework\Models\Pages\MarkdownPage; +use Hyde\Framework\Models\Pages\MarkdownPost; +use Hyde\Framework\Models\Parsers\DocumentationPageParser; +use Hyde\Framework\Modules\Markdown\MarkdownFileParser; /** * Parses a source file and returns a new page model instance for it. @@ -14,13 +21,73 @@ class SourceFileParser { use ValidatesExistence; + protected string $slug; protected PageContract $page; public function __construct(string $pageClass, string $slug) { $this->validateExistence($pageClass, $slug); - // + $this->slug = $slug; + + if ($pageClass === BladePage::class) { + $this->page = $this->parseBladePage(); + } elseif ($pageClass === MarkdownPage::class) { + $this->page = $this->parseMarkdownPage(); + } elseif ($pageClass === MarkdownPost::class) { + $this->page = $this->parseMarkdownPost(); + } elseif($pageClass === DocumentationPage::class) { + $this->page = $this->parseDocumentationPage(); + } else { + throw new \InvalidArgumentException("Invalid page class: $pageClass"); + } + } + + protected function parseBladePage(): BladePage + { + return new BladePage($this->slug); + } + + protected function parseMarkdownPage(): MarkdownPage + { + $document = (new MarkdownFileParser( + Hyde::getMarkdownPagePath("/$this->slug.md") + ))->get(); + + $matter = $document->matter; + $body = $document->body; + + return new MarkdownPage( + matter: $matter, + body: $body, + title: '@todo convert trait to action', + slug: $this->slug + ); + } + + protected function parseMarkdownPost(): MarkdownPost + { + $document = (new MarkdownFileParser( + Hyde::getMarkdownPostPath("/$this->slug.md") + ))->get(); + + $matter = array_merge($document->matter, [ + 'slug' => $this->slug, + ]); + + $body = $document->body; + + return new MarkdownPost( + matter: $matter, + body: $body, + title: '@todo convert trait to action', + slug: $this->slug + ); + } + + protected function parseDocumentationPage(): DocumentationPage + { + return (new DocumentationPageParser($this->slug))->get(); } public function get(): PageContract From 3018d86dbba590c6193819783bfd12c78a0893f6 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 19:21:31 +0200 Subject: [PATCH 18/37] Create FindsTitleForDocument.php --- .../src/Actions/FindsTitleForDocument.php | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 packages/framework/src/Actions/FindsTitleForDocument.php diff --git a/packages/framework/src/Actions/FindsTitleForDocument.php b/packages/framework/src/Actions/FindsTitleForDocument.php new file mode 100644 index 00000000000..ffc35a0dfd3 --- /dev/null +++ b/packages/framework/src/Actions/FindsTitleForDocument.php @@ -0,0 +1,36 @@ + Date: Tue, 2 Aug 2022 19:21:40 +0200 Subject: [PATCH 19/37] Find title from document --- packages/framework/src/Actions/SourceFileParser.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 8e1ccf8b4ee..97428597402 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -60,7 +60,7 @@ protected function parseMarkdownPage(): MarkdownPage return new MarkdownPage( matter: $matter, body: $body, - title: '@todo convert trait to action', + title: FindsTitleForDocument::get($this->slug, $matter, $body), slug: $this->slug ); } @@ -80,7 +80,7 @@ protected function parseMarkdownPost(): MarkdownPost return new MarkdownPost( matter: $matter, body: $body, - title: '@todo convert trait to action', + title: FindsTitleForDocument::get($this->slug, $matter, $body), slug: $this->slug ); } From c6dd45d735b45666334c231758858dd6ca9fe5da Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 19:23:09 +0200 Subject: [PATCH 20/37] Replace 'if' with 'match' expression --- .../framework/src/Actions/SourceFileParser.php | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 97428597402..f1f011cd19b 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -30,17 +30,13 @@ public function __construct(string $pageClass, string $slug) $this->slug = $slug; - if ($pageClass === BladePage::class) { - $this->page = $this->parseBladePage(); - } elseif ($pageClass === MarkdownPage::class) { - $this->page = $this->parseMarkdownPage(); - } elseif ($pageClass === MarkdownPost::class) { - $this->page = $this->parseMarkdownPost(); - } elseif($pageClass === DocumentationPage::class) { - $this->page = $this->parseDocumentationPage(); - } else { - throw new \InvalidArgumentException("Invalid page class: $pageClass"); - } + $this->page = match ($pageClass) { + BladePage::class => $this->parseBladePage(), + MarkdownPage::class => $this->parseMarkdownPage(), + MarkdownPost::class => $this->parseMarkdownPost(), + DocumentationPage::class => $this->parseDocumentationPage(), + default => throw new \InvalidArgumentException("Invalid page class: $pageClass"), + }; } protected function parseBladePage(): BladePage From 86630efaff92ed697a7160327ce9663a85b08355 Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Tue, 2 Aug 2022 17:25:34 +0000 Subject: [PATCH 21/37] Apply fixes from StyleCI --- packages/framework/src/Actions/FindsTitleForDocument.php | 3 +-- packages/framework/tests/Feature/SourceFileParserTest.php | 2 -- packages/testing/src/TestCase.php | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/framework/src/Actions/FindsTitleForDocument.php b/packages/framework/src/Actions/FindsTitleForDocument.php index ffc35a0dfd3..8a59b793306 100644 --- a/packages/framework/src/Actions/FindsTitleForDocument.php +++ b/packages/framework/src/Actions/FindsTitleForDocument.php @@ -5,7 +5,7 @@ use Hyde\Framework\Hyde; /** - * Replaces @see \Hyde\Framework\Concerns\HasDynamicTitle + * Replaces @see \Hyde\Framework\Concerns\HasDynamicTitle. */ class FindsTitleForDocument { @@ -19,7 +19,6 @@ public static function get(string $slug = '', array $matter = [], string $markdo ?: Hyde::makeTitle($slug); } - /** Attempt to find the title based on the first H1 tag. */ protected function findTitleTagInMarkdown(string $markdown): string|false { diff --git a/packages/framework/tests/Feature/SourceFileParserTest.php b/packages/framework/tests/Feature/SourceFileParserTest.php index e73e28352e2..5efdb0d307d 100644 --- a/packages/framework/tests/Feature/SourceFileParserTest.php +++ b/packages/framework/tests/Feature/SourceFileParserTest.php @@ -2,7 +2,6 @@ namespace Hyde\Framework\Testing\Feature; -use Hyde\Framework\Actions\SourceFileParser; use Hyde\Testing\TestCase; /** @@ -10,5 +9,4 @@ */ class SourceFileParserTest extends TestCase { - } diff --git a/packages/testing/src/TestCase.php b/packages/testing/src/TestCase.php index e8c55bfb526..d716746d522 100644 --- a/packages/testing/src/TestCase.php +++ b/packages/testing/src/TestCase.php @@ -90,6 +90,6 @@ protected function file(string $path, ?string $contents = null): void */ protected function markdown(string $path, string $contents = '', array $matter = []): void { - $this->file($path, (new ConvertsArrayToFrontMatter())->execute($matter) . $contents); + $this->file($path, (new ConvertsArrayToFrontMatter())->execute($matter).$contents); } } From 47605c4631fe3b1e81ce74cb09e4409a01793654 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 19:38:21 +0200 Subject: [PATCH 22/37] Make method static --- packages/framework/src/Actions/FindsTitleForDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/framework/src/Actions/FindsTitleForDocument.php b/packages/framework/src/Actions/FindsTitleForDocument.php index 8a59b793306..aec60605aef 100644 --- a/packages/framework/src/Actions/FindsTitleForDocument.php +++ b/packages/framework/src/Actions/FindsTitleForDocument.php @@ -20,7 +20,7 @@ public static function get(string $slug = '', array $matter = [], string $markdo } /** Attempt to find the title based on the first H1 tag. */ - protected function findTitleTagInMarkdown(string $markdown): string|false + protected static function findTitleTagInMarkdown(string $markdown): string|false { $lines = explode("\n", $markdown); From 522fdf2a705c8cb0b0d9505e5ae1b6a430776cdb Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 19:41:24 +0200 Subject: [PATCH 23/37] Create test file --- packages/framework/tests/Unit/PageModelParseHelperTest.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/framework/tests/Unit/PageModelParseHelperTest.php b/packages/framework/tests/Unit/PageModelParseHelperTest.php index 08b86d2e647..b8dab4a4b4b 100644 --- a/packages/framework/tests/Unit/PageModelParseHelperTest.php +++ b/packages/framework/tests/Unit/PageModelParseHelperTest.php @@ -16,8 +16,12 @@ class PageModelParseHelperTest extends TestCase { public function test_blade_page_get_helper_returns_blade_page_object() { + Hyde::touch(('_pages/foo.blade.php')); + $object = BladePage::parse('foo'); $this->assertInstanceOf(BladePage::class, $object); + + unlink(Hyde::path('_pages/foo.blade.php')); } public function test_markdown_page_get_helper_returns_markdown_page_object() From b6bbdd19b4abd488fb7bb5228d443ec19678317f Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 19:56:47 +0200 Subject: [PATCH 24/37] Exception already handled in validates existence --- packages/framework/src/Actions/SourceFileParser.php | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index f1f011cd19b..aed92c6887f 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -35,7 +35,6 @@ public function __construct(string $pageClass, string $slug) MarkdownPage::class => $this->parseMarkdownPage(), MarkdownPost::class => $this->parseMarkdownPost(), DocumentationPage::class => $this->parseDocumentationPage(), - default => throw new \InvalidArgumentException("Invalid page class: $pageClass"), }; } From 3382622250ae4f8eec0bd28ad27a24db873343f6 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 19:56:59 +0200 Subject: [PATCH 25/37] Create base tests --- .../tests/Feature/SourceFileParserTest.php | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/packages/framework/tests/Feature/SourceFileParserTest.php b/packages/framework/tests/Feature/SourceFileParserTest.php index 5efdb0d307d..3b6befb5ab1 100644 --- a/packages/framework/tests/Feature/SourceFileParserTest.php +++ b/packages/framework/tests/Feature/SourceFileParserTest.php @@ -2,6 +2,11 @@ namespace Hyde\Framework\Testing\Feature; +use Hyde\Framework\Actions\SourceFileParser; +use Hyde\Framework\Models\Pages\BladePage; +use Hyde\Framework\Models\Pages\DocumentationPage; +use Hyde\Framework\Models\Pages\MarkdownPage; +use Hyde\Framework\Models\Pages\MarkdownPost; use Hyde\Testing\TestCase; /** @@ -9,4 +14,49 @@ */ class SourceFileParserTest extends TestCase { + public function test_blade_page_parser() + { + $this->file('_pages/foo.blade.php'); + + $parser = new SourceFileParser(BladePage::class, 'foo'); + $page = $parser->get(); + $this->assertInstanceOf(BladePage::class, $page); + $this->assertEquals('foo', $page->slug); + } + + public function test_markdown_page_parser() + { + $this->markdown('_pages/foo.md', '# Foo Bar', ['title' => 'Foo Bar Baz']); + + $parser = new SourceFileParser(MarkdownPage::class, 'foo'); + $page = $parser->get(); + $this->assertInstanceOf(MarkdownPage::class, $page); + $this->assertEquals('foo', $page->slug); + $this->assertEquals('# Foo Bar', $page->body); + $this->assertEquals('Foo Bar Baz', $page->title); + } + + public function test_markdown_post_parser() + { + $this->markdown('_posts/foo.md', '# Foo Bar', ['title' => 'Foo Bar Baz']); + + $parser = new SourceFileParser(MarkdownPost::class, 'foo'); + $page = $parser->get(); + $this->assertInstanceOf(MarkdownPost::class, $page); + $this->assertEquals('foo', $page->slug); + $this->assertEquals('# Foo Bar', $page->body); + $this->assertEquals('Foo Bar Baz', $page->title); + } + + public function test_documentation_page_parser() + { + $this->markdown('_docs/foo.md', '# Foo Bar', ['title' => 'Foo Bar Baz']); + + $parser = new SourceFileParser(DocumentationPage::class, 'foo'); + $page = $parser->get(); + $this->assertInstanceOf(DocumentationPage::class, $page); + $this->assertEquals('foo', $page->slug); + $this->assertEquals('# Foo Bar', $page->body); + $this->assertEquals('Foo Bar Baz', $page->title); + } } From 8c381138b3532589a1ad5e927975cfb75d635426 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 22:47:25 +0200 Subject: [PATCH 26/37] Normalize front matter --- packages/framework/src/Actions/SourceFileParser.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index aed92c6887f..29c65144c3c 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -49,7 +49,10 @@ protected function parseMarkdownPage(): MarkdownPage Hyde::getMarkdownPagePath("/$this->slug.md") ))->get(); - $matter = $document->matter; + $matter = array_merge($document->matter, [ + 'slug' => $this->slug, + ]); + $body = $document->body; return new MarkdownPage( From 961f98e0d42ebe2818dae3da8af34c49a80426ce Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 22:48:42 +0200 Subject: [PATCH 27/37] Use the configured extension --- packages/framework/src/Actions/SourceFileParser.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 29c65144c3c..5c71ec87a97 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -46,7 +46,7 @@ protected function parseBladePage(): BladePage protected function parseMarkdownPage(): MarkdownPage { $document = (new MarkdownFileParser( - Hyde::getMarkdownPagePath("/$this->slug.md") + Hyde::getMarkdownPagePath($this->slug.MarkdownPage::$fileExtension) ))->get(); $matter = array_merge($document->matter, [ @@ -66,7 +66,7 @@ protected function parseMarkdownPage(): MarkdownPage protected function parseMarkdownPost(): MarkdownPost { $document = (new MarkdownFileParser( - Hyde::getMarkdownPostPath("/$this->slug.md") + Hyde::getMarkdownPostPath($this->slug.MarkdownPost::$fileExtension) ))->get(); $matter = array_merge($document->matter, [ From 7243871643add4d795f5565bc1bd06d815e42363 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 22:54:06 +0200 Subject: [PATCH 28/37] Test advanced documentation page parsing --- .../tests/Feature/SourceFileParserTest.php | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/packages/framework/tests/Feature/SourceFileParserTest.php b/packages/framework/tests/Feature/SourceFileParserTest.php index 3b6befb5ab1..5709f58d3eb 100644 --- a/packages/framework/tests/Feature/SourceFileParserTest.php +++ b/packages/framework/tests/Feature/SourceFileParserTest.php @@ -3,6 +3,7 @@ namespace Hyde\Framework\Testing\Feature; use Hyde\Framework\Actions\SourceFileParser; +use Hyde\Framework\Hyde; use Hyde\Framework\Models\Pages\BladePage; use Hyde\Framework\Models\Pages\DocumentationPage; use Hyde\Framework\Models\Pages\MarkdownPage; @@ -59,4 +60,30 @@ public function test_documentation_page_parser() $this->assertEquals('# Foo Bar', $page->body); $this->assertEquals('Foo Bar Baz', $page->title); } + + public function test_documentation_page_parser_can_get_category_from_front_matter() + { + $this->markdown('_docs/foo.md', '# Foo Bar', ['category' => 'foo']); + + $parser = new SourceFileParser(DocumentationPage::class, 'foo'); + + /** @var DocumentationPage $page */ + $page = $parser->get(); + $this->assertEquals('foo', $page->category); + } + + public function test_documentation_page_parser_can_get_category_automatically_from_nested_page() + { + mkdir(Hyde::path('_docs/foo')); + touch(Hyde::path('_docs/foo/bar.md')); + + $parser = new SourceFileParser(DocumentationPage::class, 'foo/bar'); + + /** @var DocumentationPage $page */ + $page = $parser->get(); + $this->assertEquals('foo', $page->category); + + unlink(Hyde::path('_docs/foo/bar.md')); + rmdir(Hyde::path('_docs/foo')); + } } From 895e87e1be54a6eaa571b9b3305ca7af31101ece Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 23:03:17 +0200 Subject: [PATCH 29/37] Move the documentation page parser into action --- .../src/Actions/SourceFileParser.php | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 5c71ec87a97..ecbf96a422c 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -11,6 +11,7 @@ use Hyde\Framework\Models\Pages\MarkdownPost; use Hyde\Framework\Models\Parsers\DocumentationPageParser; use Hyde\Framework\Modules\Markdown\MarkdownFileParser; +use Illuminate\Support\Str; /** * Parses a source file and returns a new page model instance for it. @@ -85,7 +86,33 @@ protected function parseMarkdownPost(): MarkdownPost protected function parseDocumentationPage(): DocumentationPage { - return (new DocumentationPageParser($this->slug))->get(); + $document = (new MarkdownFileParser( + Hyde::getDocumentationPagePath($this->slug.DocumentationPage::$fileExtension) + ))->get(); + + $matter = array_merge($document->matter, [ + 'slug' => $this->slug, + ]); + + $body = $document->body; + + return new DocumentationPage( + matter: $matter, + body: $body, + title: FindsTitleForDocument::get($this->slug, $matter, $body), + slug: basename($this->slug), + category: $this->getDocumentationPageCategory($matter), + localPath: $this->slug + ); + } + + protected function getDocumentationPageCategory(array $matter): ?string + { + if (str_contains($this->slug, '/')) { + return Str::before($this->slug, '/'); + } + + return $matter['category'] ?? null; } public function get(): PageContract From 8e1a336952b26fad28d2710a201711f6b6c4d2aa Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Tue, 2 Aug 2022 21:09:30 +0000 Subject: [PATCH 30/37] Apply fixes from StyleCI --- packages/framework/src/Actions/SourceFileParser.php | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index ecbf96a422c..f739c27bbf8 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -9,7 +9,6 @@ use Hyde\Framework\Models\Pages\DocumentationPage; use Hyde\Framework\Models\Pages\MarkdownPage; use Hyde\Framework\Models\Pages\MarkdownPost; -use Hyde\Framework\Models\Parsers\DocumentationPageParser; use Hyde\Framework\Modules\Markdown\MarkdownFileParser; use Illuminate\Support\Str; From 858eca6d37bf9a29324c936222d4a409afc6ffa7 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 23:15:52 +0200 Subject: [PATCH 31/37] Remove front matter normalization from parser --- packages/framework/src/Actions/SourceFileParser.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index ecbf96a422c..93ca2932c3e 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -50,10 +50,7 @@ protected function parseMarkdownPage(): MarkdownPage Hyde::getMarkdownPagePath($this->slug.MarkdownPage::$fileExtension) ))->get(); - $matter = array_merge($document->matter, [ - 'slug' => $this->slug, - ]); - + $matter = $document->matter; $body = $document->body; return new MarkdownPage( @@ -70,10 +67,7 @@ protected function parseMarkdownPost(): MarkdownPost Hyde::getMarkdownPostPath($this->slug.MarkdownPost::$fileExtension) ))->get(); - $matter = array_merge($document->matter, [ - 'slug' => $this->slug, - ]); - + $matter = $document->matter; $body = $document->body; return new MarkdownPost( From 6f7dfa6ebc1fa32ab733413948d0b1e63a3b5683 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 23:16:36 +0200 Subject: [PATCH 32/37] Unset front matter slug if it exists --- packages/framework/src/Modules/Markdown/MarkdownFileParser.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/framework/src/Modules/Markdown/MarkdownFileParser.php b/packages/framework/src/Modules/Markdown/MarkdownFileParser.php index 75b2693b2b2..e8602ca22c1 100644 --- a/packages/framework/src/Modules/Markdown/MarkdownFileParser.php +++ b/packages/framework/src/Modules/Markdown/MarkdownFileParser.php @@ -36,6 +36,9 @@ public function __construct(string $filepath) if ($object->matter()) { $this->matter = $object->matter(); + + // Unset the slug from the matter, as it can cause problems if it exists. + unset($this->matter['slug']); } if ($object->body()) { From fa63eff37c74228eae6681c7883f36e270eaf2f4 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 2 Aug 2022 23:23:10 +0200 Subject: [PATCH 33/37] Move documentation to new class --- packages/framework/src/Actions/SourceFileParser.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/framework/src/Actions/SourceFileParser.php b/packages/framework/src/Actions/SourceFileParser.php index 9bdc1a54dc9..c47008af10d 100644 --- a/packages/framework/src/Actions/SourceFileParser.php +++ b/packages/framework/src/Actions/SourceFileParser.php @@ -15,6 +15,11 @@ /** * Parses a source file and returns a new page model instance for it. * + * Page Parsers are responsible for parsing a source file into a Page object, + * and may also conduct pre-processing and/or data validation/assembly. + * + * Note that the Page Parsers do not compile any HTML or Markdown. + * * @see \Hyde\Framework\Testing\Feature\SourceFileParserTest */ class SourceFileParser From 3b5255685d4a540049c3925c6cfd362be7395f32 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Wed, 3 Aug 2022 12:38:44 +0200 Subject: [PATCH 34/37] Front matter no longer includes merged slug --- packages/framework/tests/Unit/MarkdownPostParserTest.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/framework/tests/Unit/MarkdownPostParserTest.php b/packages/framework/tests/Unit/MarkdownPostParserTest.php index 3b0d95bd964..d94ec873a08 100644 --- a/packages/framework/tests/Unit/MarkdownPostParserTest.php +++ b/packages/framework/tests/Unit/MarkdownPostParserTest.php @@ -30,7 +30,7 @@ public function test_can_parse_markdown_file() { $post = (new MarkdownPostParser('test-post'))->get(); $this->assertInstanceOf(MarkdownPost::class, $post); - $this->assertCount(4, ($post->matter)); + $this->assertCount(3, ($post->matter)); $this->assertIsArray($post->matter); $this->assertIsString($post->body); $this->assertIsString($post->slug); @@ -44,6 +44,5 @@ public function test_parsed_markdown_post_contains_valid_front_matter() $this->assertEquals('My New Post', $post->matter['title']); $this->assertEquals('Mr. Hyde', $post->matter['author']); $this->assertEquals('blog', $post->matter['category']); - $this->assertEquals('test-post', $post->matter['slug']); } } From faf8bf1b459c49d7655a34850dd8dad3e8f681f7 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Wed, 3 Aug 2022 12:49:37 +0200 Subject: [PATCH 35/37] Clean up after the test --- .../tests/Unit/InteractsWithDirectoriesConcernTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/framework/tests/Unit/InteractsWithDirectoriesConcernTest.php b/packages/framework/tests/Unit/InteractsWithDirectoriesConcernTest.php index 544becac2e1..cd304cb59cc 100644 --- a/packages/framework/tests/Unit/InteractsWithDirectoriesConcernTest.php +++ b/packages/framework/tests/Unit/InteractsWithDirectoriesConcernTest.php @@ -60,5 +60,7 @@ public function test_needs_directories_creates_multiple_directories() $this->needsDirectories([Hyde::path('foo'), Hyde::path('bar')]); $this->assertDirectoryExists(Hyde::path('foo')); $this->assertDirectoryExists(Hyde::path('bar')); + + File::deleteDirectory(Hyde::path('bar')); } } From 22ea1c884e527c5e7654e6e53e821dbeacb1908d Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Wed, 3 Aug 2022 12:05:45 +0200 Subject: [PATCH 36/37] Remove legacy page parsers --- .../GeneratesDocumentationSearchIndexFile.php | 3 +- .../framework/src/Contracts/AbstractPage.php | 16 --- .../src/Contracts/AbstractPageParser.php | 45 -------- .../framework/src/Contracts/PageContract.php | 13 --- .../src/Contracts/PageParserContract.php | 23 ---- .../framework/src/Models/Pages/BladePage.php | 22 +--- .../src/Models/Pages/DocumentationPage.php | 2 - .../src/Models/Pages/MarkdownPage.php | 2 - .../src/Models/Pages/MarkdownPost.php | 2 - .../Parsers/DocumentationPageParser.php | 60 ---------- .../src/Models/Parsers/MarkdownPageParser.php | 46 -------- .../src/Models/Parsers/MarkdownPostParser.php | 45 -------- .../src/Services/DiscoveryService.php | 23 ---- .../tests/Feature/AbstractPageTest.php | 42 ------- .../tests/Feature/DiscoveryServiceTest.php | 23 ---- .../Feature/DocumentationPageParserTest.php | 106 ------------------ .../tests/Feature/MarkdownPageTest.php | 56 +-------- .../tests/Unit/MarkdownPostParserTest.php | 4 +- ...esInCustomDirectoriesCanBeCompiledTest.php | 24 +--- 19 files changed, 13 insertions(+), 544 deletions(-) delete mode 100644 packages/framework/src/Contracts/AbstractPageParser.php delete mode 100644 packages/framework/src/Contracts/PageParserContract.php delete mode 100644 packages/framework/src/Models/Parsers/DocumentationPageParser.php delete mode 100644 packages/framework/src/Models/Parsers/MarkdownPageParser.php delete mode 100644 packages/framework/src/Models/Parsers/MarkdownPostParser.php delete mode 100644 packages/framework/tests/Feature/DocumentationPageParserTest.php diff --git a/packages/framework/src/Actions/GeneratesDocumentationSearchIndexFile.php b/packages/framework/src/Actions/GeneratesDocumentationSearchIndexFile.php index f81685781c6..c3b98c3f3dc 100644 --- a/packages/framework/src/Actions/GeneratesDocumentationSearchIndexFile.php +++ b/packages/framework/src/Actions/GeneratesDocumentationSearchIndexFile.php @@ -6,7 +6,6 @@ use Hyde\Framework\Contracts\ActionContract; use Hyde\Framework\Hyde; use Hyde\Framework\Models\Pages\DocumentationPage; -use Hyde\Framework\Models\Parsers\DocumentationPageParser; use Hyde\Framework\Services\DiscoveryService; use Illuminate\Support\Collection; use Illuminate\Support\Str; @@ -60,7 +59,7 @@ public function generate(): static public function generatePageObject(string $slug): object { - $page = (new DocumentationPageParser($slug))->get(); + $page = DocumentationPage::parse($slug); return (object) [ 'slug' => $page->slug, diff --git a/packages/framework/src/Contracts/AbstractPage.php b/packages/framework/src/Contracts/AbstractPage.php index 211b364f0e2..40d42b04581 100644 --- a/packages/framework/src/Contracts/AbstractPage.php +++ b/packages/framework/src/Contracts/AbstractPage.php @@ -29,10 +29,6 @@ abstract class AbstractPage implements PageContract, CompilableContract public static string $outputDirectory; public static string $fileExtension; - /** - * @deprecated - */ - public static string $parserClass; public static string $template; /** @inheritDoc */ @@ -53,18 +49,6 @@ final public static function getFileExtension(): string return '.'.ltrim(static::$fileExtension, '.'); } - /** @deprecated */ - final public static function getParserClass(): string - { - return static::$parserClass; - } - - /** @deprecated */ - public static function getParser(string $slug): PageParserContract - { - return new static::$parserClass($slug); - } - /** @inheritDoc */ public static function parse(string $slug): PageContract { diff --git a/packages/framework/src/Contracts/AbstractPageParser.php b/packages/framework/src/Contracts/AbstractPageParser.php deleted file mode 100644 index 84e16905858..00000000000 --- a/packages/framework/src/Contracts/AbstractPageParser.php +++ /dev/null @@ -1,45 +0,0 @@ -slug = $slug; - $this->validateExistence($this->pageModel, $slug); - $this->execute(); - } -} diff --git a/packages/framework/src/Contracts/PageContract.php b/packages/framework/src/Contracts/PageContract.php index 4fc93bf2163..37d5858173b 100644 --- a/packages/framework/src/Contracts/PageContract.php +++ b/packages/framework/src/Contracts/PageContract.php @@ -27,19 +27,6 @@ public static function getOutputDirectory(): string; */ public static function getFileExtension(): string; - /** - * Get the class that parses source files into page models. - * - * @return string<\Hyde\Framework\Contracts\PageParserContract> - */ - public static function getParserClass(): string; - - /** - * Create and return a new PageParser instance for this model, - * with the given slug passed to the constructor. - */ - public static function getParser(string $slug): PageParserContract; - /** * Parse a source file slug into a page model. * diff --git a/packages/framework/src/Contracts/PageParserContract.php b/packages/framework/src/Contracts/PageParserContract.php deleted file mode 100644 index 013b4e76156..00000000000 --- a/packages/framework/src/Contracts/PageParserContract.php +++ /dev/null @@ -1,23 +0,0 @@ -slug.md") - ))->get(); - - $this->body = $document->body; - $this->matter = $document->matter; - } - - public function get(): DocumentationPage - { - return new DocumentationPage( - matter: $this->matter, - body: $this->body, - title: $this->title, - slug: basename($this->slug), - category: $this->getCategory(), - localPath: $this->slug - ); - } - - public function getCategory(): ?string - { - if (str_contains($this->slug, '/')) { - return Str::before($this->slug, '/'); - } - - return $this->matter['category'] ?? null; - } -} diff --git a/packages/framework/src/Models/Parsers/MarkdownPageParser.php b/packages/framework/src/Models/Parsers/MarkdownPageParser.php deleted file mode 100644 index 152e4063b4d..00000000000 --- a/packages/framework/src/Models/Parsers/MarkdownPageParser.php +++ /dev/null @@ -1,46 +0,0 @@ -slug.md") - ))->get(); - - $this->matter = $document->matter; - $this->body = $document->body; - } - - public function get(): MarkdownPage - { - return new MarkdownPage( - matter: $this->matter, - body: $this->body, - title: $this->title, - slug: $this->slug - ); - } -} diff --git a/packages/framework/src/Models/Parsers/MarkdownPostParser.php b/packages/framework/src/Models/Parsers/MarkdownPostParser.php deleted file mode 100644 index 6d5384f3253..00000000000 --- a/packages/framework/src/Models/Parsers/MarkdownPostParser.php +++ /dev/null @@ -1,45 +0,0 @@ -slug.md") - ))->get(); - - $this->matter = array_merge($document->matter, [ - 'slug' => $this->slug, - ]); - - $this->body = $document->body; - } - - public function get(): MarkdownPost - { - return new MarkdownPost( - matter: $this->matter, - body: $this->body, - title: $this->title, - slug: $this->slug - ); - } -} diff --git a/packages/framework/src/Services/DiscoveryService.php b/packages/framework/src/Services/DiscoveryService.php index 2aab6ed482a..053243b3c44 100644 --- a/packages/framework/src/Services/DiscoveryService.php +++ b/packages/framework/src/Services/DiscoveryService.php @@ -3,7 +3,6 @@ namespace Hyde\Framework\Services; use Hyde\Framework\Contracts\AbstractPage; -use Hyde\Framework\Contracts\PageParserContract; use Hyde\Framework\Exceptions\UnsupportedPageTypeException; use Hyde\Framework\Hyde; use Hyde\Framework\Models\Pages\BladePage; @@ -22,28 +21,6 @@ */ class DiscoveryService { - public static function getParserClassForModel(string $model): string - { - /** @var AbstractPage $model */ - return $model::getParserClass(); - } - - /** - * Create and get a constructed instance of a Model's Parser class. - * - * @param string $model Class constant of the Model to get the Parser for. - * @param string $slug The slug of the source file to parse. - * - * @example getParserForModel(MarkdownPost::class, 'hello-world') - * - * @return PageParserContract The constructed Parser instance. - */ - public static function getParserInstanceForModel(string $model, string $slug): PageParserContract - { - /** @var AbstractPage $model */ - return new $model::$parserClass($slug); - } - /** * Supply a model::class constant and get a list of all the existing source file base names. * diff --git a/packages/framework/tests/Feature/AbstractPageTest.php b/packages/framework/tests/Feature/AbstractPageTest.php index 8769665112b..53c98deb568 100644 --- a/packages/framework/tests/Feature/AbstractPageTest.php +++ b/packages/framework/tests/Feature/AbstractPageTest.php @@ -12,8 +12,6 @@ use Hyde\Framework\Models\Pages\DocumentationPage; use Hyde\Framework\Models\Pages\MarkdownPage; use Hyde\Framework\Models\Pages\MarkdownPost; -use Hyde\Framework\Models\Parsers\MarkdownPageParser; -use Hyde\Framework\Models\Parsers\MarkdownPostParser; use Hyde\Framework\Models\Route; use Hyde\Testing\TestCase; @@ -67,32 +65,6 @@ public function test_get_file_extension_forces_leading_period() $this->assertEquals('.foo', MarkdownPage::getFileExtension()); } - public function test_get_parser_class_returns_static_property() - { - MarkdownPage::$parserClass = 'foo'; - $this->assertEquals('foo', MarkdownPage::getParserClass()); - } - - public function test_get_parser_returns_the_configured_parser_class() - { - Hyde::touch(('_posts/foo.md')); - - MarkdownPage::$parserClass = MarkdownPostParser::class; - $this->assertInstanceOf(MarkdownPostParser::class, MarkdownPage::getParser('foo')); - - unlink(Hyde::path('_posts/foo.md')); - } - - public function test_get_parser_returns_instantiated_parser_for_the_supplied_slug() - { - Hyde::touch(('_pages/foo.md')); - - $this->assertInstanceOf(MarkdownPageParser::class, $parser = MarkdownPage::getParser('foo')); - $this->assertEquals('foo', $parser->get()->slug); - - unlink(Hyde::path('_pages/foo.md')); - } - public function test_parse_parses_supplied_slug_into_a_page_model() { Hyde::touch(('_pages/foo.md')); @@ -255,20 +227,6 @@ public function test_all_page_models_have_configured_file_extension() } } - public function test_all_page_models_have_configured_parser_class() - { - $pages = [ - BladePage::class => 'Hyde\Framework\Models\Pages\BladePage', - MarkdownPage::class => 'Hyde\Framework\Models\Parsers\MarkdownPageParser', - MarkdownPost::class => 'Hyde\Framework\Models\Parsers\MarkdownPostParser', - DocumentationPage::class => 'Hyde\Framework\Models\Parsers\DocumentationPageParser', - ]; - - foreach ($pages as $page => $expected) { - $this->assertEquals($expected, $page::$parserClass); - } - } - public function test_abstract_markdown_page_extends_abstract_page() { $this->assertInstanceOf(AbstractPage::class, new class extends AbstractMarkdownPage {}); diff --git a/packages/framework/tests/Feature/DiscoveryServiceTest.php b/packages/framework/tests/Feature/DiscoveryServiceTest.php index dbee2965d76..8f4a5959b3f 100644 --- a/packages/framework/tests/Feature/DiscoveryServiceTest.php +++ b/packages/framework/tests/Feature/DiscoveryServiceTest.php @@ -8,9 +8,6 @@ use Hyde\Framework\Models\Pages\DocumentationPage; use Hyde\Framework\Models\Pages\MarkdownPage; use Hyde\Framework\Models\Pages\MarkdownPost; -use Hyde\Framework\Models\Parsers\DocumentationPageParser; -use Hyde\Framework\Models\Parsers\MarkdownPageParser; -use Hyde\Framework\Models\Parsers\MarkdownPostParser; use Hyde\Framework\Services\DiscoveryService; use Hyde\Testing\TestCase; use Illuminate\Support\Facades\File; @@ -33,26 +30,6 @@ public function deleteContentSourceTestFiles() unlink(Hyde::path(DiscoveryService::getModelSourceDirectory(BladePage::class).'/test.blade.php')); } - public function test_get_parser_class_for_model() - { - $this->assertEquals(MarkdownPageParser::class, DiscoveryService::getParserClassForModel(MarkdownPage::class)); - $this->assertEquals(MarkdownPostParser::class, DiscoveryService::getParserClassForModel(MarkdownPost::class)); - $this->assertEquals(DocumentationPageParser::class, DiscoveryService::getParserClassForModel(DocumentationPage::class)); - $this->assertEquals(BladePage::class, DiscoveryService::getParserClassForModel(BladePage::class)); - } - - public function test_get_parser_instance_for_model() - { - $this->createContentSourceTestFiles(); - - $this->assertInstanceOf(MarkdownPageParser::class, DiscoveryService::getParserInstanceForModel(MarkdownPage::class, 'test')); - $this->assertInstanceOf(MarkdownPostParser::class, DiscoveryService::getParserInstanceForModel(MarkdownPost::class, 'test')); - $this->assertInstanceOf(DocumentationPageParser::class, DiscoveryService::getParserInstanceForModel(DocumentationPage::class, 'test')); - $this->assertInstanceOf(BladePage::class, DiscoveryService::getParserInstanceForModel(BladePage::class, 'test')); - - $this->deleteContentSourceTestFiles(); - } - public function test_get_file_extension_for_model_files() { $this->assertEquals('.md', DiscoveryService::getModelFileExtension(MarkdownPage::class)); diff --git a/packages/framework/tests/Feature/DocumentationPageParserTest.php b/packages/framework/tests/Feature/DocumentationPageParserTest.php deleted file mode 100644 index 387aa53c9a1..00000000000 --- a/packages/framework/tests/Feature/DocumentationPageParserTest.php +++ /dev/null @@ -1,106 +0,0 @@ -get(); - $this->assertInstanceOf(DocumentationPage::class, $page); - unlink(Hyde::path('_docs/test.md')); - } - - public function test_can_get_collection_of_slugs() - { - $this->resetDocs(); - - file_put_contents(Hyde::path('_docs/phpunit-test.md'), "# PHPUnit Test File \n Hello World!"); - - $array = DiscoveryService::getDocumentationPageFiles(); - - $this->assertIsArray($array); - $this->assertCount(1, $array); - $this->assertArrayHasKey('phpunit-test', array_flip($array)); - } - - public function test_exception_is_thrown_for_missing_slug() - { - $this->expectException(Exception::class); - $this->expectExceptionMessage('File _docs/invalid-file.md not found.'); - new DocumentationPageParser('invalid-file'); - } - - public function test_can_parse_documentation_page() - { - $parser = new DocumentationPageParser('phpunit-test'); - $this->assertInstanceOf(DocumentationPageParser::class, $parser); - } - - public function test_title_was_inferred_from_heading() - { - $parser = new DocumentationPageParser('phpunit-test'); - $object = $parser->get(); - $this->assertIsString($object->title); - $this->assertEquals('PHPUnit Test File', $object->title); - } - - public function test_parser_contains_body_text() - { - $parser = new DocumentationPageParser('phpunit-test'); - $this->assertIsString($parser->body); - $this->assertEquals("# PHPUnit Test File \n Hello World!", $parser->body); - } - - public function test_can_get_page_model_object() - { - $parser = new DocumentationPageParser('phpunit-test'); - $object = $parser->get(); - $this->assertInstanceOf(DocumentationPage::class, $object); - } - - public function test_created_model_contains_expected_data() - { - $parser = new DocumentationPageParser('phpunit-test'); - $object = $parser->get(); - $this->assertEquals('PHPUnit Test File', $object->title); - $this->assertEquals("# PHPUnit Test File \n Hello World!", $object->body); - $this->assertEquals('phpunit-test', $object->slug); - } - - public function test_cleanup() - { - unlink(Hyde::path('_docs/phpunit-test.md')); - $this->assertTrue(true); - } - - public function test_can_get_category_from_front_matter() - { - file_put_contents(Hyde::path('_docs/foo.md'), "---\ncategory: foo\n---\n"); - $parser = new DocumentationPageParser('foo'); - $this->assertEquals('foo', $parser->getCategory()); - unlink(Hyde::path('_docs/foo.md')); - } - - public function test_can_get_category_automatically_from_nested_page() - { - mkdir(Hyde::path('_docs/foo')); - touch(Hyde::path('_docs/foo/bar.md')); - $parser = new DocumentationPageParser('foo/bar'); - $this->assertEquals('foo', $parser->getCategory()); - - unlink(Hyde::path('_docs/foo/bar.md')); - rmdir(Hyde::path('_docs/foo')); - } -} diff --git a/packages/framework/tests/Feature/MarkdownPageTest.php b/packages/framework/tests/Feature/MarkdownPageTest.php index 857cd74d350..f3b85d95188 100644 --- a/packages/framework/tests/Feature/MarkdownPageTest.php +++ b/packages/framework/tests/Feature/MarkdownPageTest.php @@ -2,10 +2,8 @@ namespace Hyde\Framework\Testing\Feature; -use Exception; use Hyde\Framework\Hyde; use Hyde\Framework\Models\Pages\MarkdownPage; -use Hyde\Framework\Models\Parsers\MarkdownPageParser; use Hyde\Framework\Services\DiscoveryService; use Hyde\Testing\TestCase; use Illuminate\Support\Facades\File; @@ -33,9 +31,6 @@ protected function tearDown(): void parent::tearDown(); } - /** - * Test the Parser. - */ public function test_can_get_collection_of_slugs() { $array = DiscoveryService::getMarkdownPageFiles(); @@ -45,53 +40,12 @@ public function test_can_get_collection_of_slugs() $this->assertArrayHasKey('test-post', array_flip($array)); } - public function test_exception_is_thrown_for_missing_slug() + public function test_created_model_contains_expected_data() { - $this->expectException(Exception::class); - $this->expectExceptionMessage('File _pages/invalid-file.md not found.'); - new MarkdownPageParser('invalid-file'); - } - - public function test_can_parse_documentation_page() - { - $parser = new MarkdownPageParser('test-post'); - $this->assertInstanceOf(MarkdownPageParser::class, $parser); - } + $page = MarkdownPage::parse('test-post'); - public function test_title_was_inferred_from_heading() - { - $parser = new MarkdownPageParser('test-post'); - $object = $parser->get(); - $this->assertIsString($object->title); - $this->assertEquals('PHPUnit Test File', $object->title); - } - - public function test_parser_contains_body_text() - { - $parser = new MarkdownPageParser('test-post'); - $this->assertIsString($parser->body); - $this->assertEquals("# PHPUnit Test File \n Hello World!", $parser->body); - } - - /** - * Test the Model. - */ - public function test_can_get_page_model_object(): MarkdownPage - { - $parser = new MarkdownPageParser('test-post'); - $object = $parser->get(); - $this->assertInstanceOf(MarkdownPage::class, $object); - - return $object; - } - - /** - * @depends test_can_get_page_model_object - */ - public function test_created_model_contains_expected_data(MarkdownPage $object) - { - $this->assertEquals('PHPUnit Test File', $object->title); - $this->assertEquals("# PHPUnit Test File \n Hello World!", $object->body); - $this->assertEquals('test-post', $object->slug); + $this->assertEquals('PHPUnit Test File', $page->title); + $this->assertEquals("# PHPUnit Test File \n Hello World!", $page->body); + $this->assertEquals('test-post', $page->slug); } } diff --git a/packages/framework/tests/Unit/MarkdownPostParserTest.php b/packages/framework/tests/Unit/MarkdownPostParserTest.php index d94ec873a08..dfc7297de82 100644 --- a/packages/framework/tests/Unit/MarkdownPostParserTest.php +++ b/packages/framework/tests/Unit/MarkdownPostParserTest.php @@ -28,7 +28,7 @@ protected function tearDown(): void public function test_can_parse_markdown_file() { - $post = (new MarkdownPostParser('test-post'))->get(); + $post = MarkdownPost::parse('test-post'); $this->assertInstanceOf(MarkdownPost::class, $post); $this->assertCount(3, ($post->matter)); $this->assertIsArray($post->matter); @@ -40,7 +40,7 @@ public function test_can_parse_markdown_file() public function test_parsed_markdown_post_contains_valid_front_matter() { - $post = (new MarkdownPostParser('test-post'))->get(); + $post = MarkdownPost::parse('test-post'); $this->assertEquals('My New Post', $post->matter['title']); $this->assertEquals('Mr. Hyde', $post->matter['author']); $this->assertEquals('blog', $post->matter['category']); diff --git a/packages/framework/tests/Unit/SourceFilesInCustomDirectoriesCanBeCompiledTest.php b/packages/framework/tests/Unit/SourceFilesInCustomDirectoriesCanBeCompiledTest.php index 09e0a3fe201..d550e79426a 100644 --- a/packages/framework/tests/Unit/SourceFilesInCustomDirectoriesCanBeCompiledTest.php +++ b/packages/framework/tests/Unit/SourceFilesInCustomDirectoriesCanBeCompiledTest.php @@ -39,12 +39,8 @@ public function test_markdown_posts_in_changed_directory_can_be_compiled() MarkdownPost::$sourceDirectory = 'testSourceDir/blog'; - // Uses the same logic as the BuildActionRunner for an accurate test. new StaticPageBuilder( - DiscoveryService::getParserInstanceForModel( - MarkdownPost::class, - 'test' - )->get(), + MarkdownPost::parse('test'), true ); @@ -59,12 +55,8 @@ public function test_markdown_pages_in_changed_directory_can_be_compiled() MarkdownPage::$sourceDirectory = 'testSourceDir/pages'; - // Uses the same logic as the BuildActionRunner for an accurate test. new StaticPageBuilder( - DiscoveryService::getParserInstanceForModel( - MarkdownPage::class, - 'test' - )->get(), + MarkdownPage::parse('test'), true ); @@ -79,12 +71,8 @@ public function test_documentation_pages_in_changed_directory_can_be_compiled() DocumentationPage::$sourceDirectory = 'testSourceDir/documentation'; - // Uses the same logic as the BuildActionRunner for an accurate test. new StaticPageBuilder( - DiscoveryService::getParserInstanceForModel( - DocumentationPage::class, - 'test' - )->get(), + DocumentationPage::parse('test'), true ); @@ -100,12 +88,8 @@ public function test_blade_pages_in_changed_directory_can_be_compiled() BladePage::$sourceDirectory = 'testSourceDir/blade'; Config::set('view.paths', ['testSourceDir/blade']); - // Uses the same logic as the BuildActionRunner for an accurate test. new StaticPageBuilder( - DiscoveryService::getParserInstanceForModel( - BladePage::class, - 'test' - )->get(), + BladePage::parse('test'), true ); From 36b2f59df18228b03d87af80eb8474eecab699b8 Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Wed, 3 Aug 2022 10:52:25 +0000 Subject: [PATCH 37/37] Apply fixes from StyleCI --- packages/framework/tests/Unit/MarkdownPostParserTest.php | 1 - .../Unit/SourceFilesInCustomDirectoriesCanBeCompiledTest.php | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/framework/tests/Unit/MarkdownPostParserTest.php b/packages/framework/tests/Unit/MarkdownPostParserTest.php index dfc7297de82..dc1e1a51a94 100644 --- a/packages/framework/tests/Unit/MarkdownPostParserTest.php +++ b/packages/framework/tests/Unit/MarkdownPostParserTest.php @@ -4,7 +4,6 @@ use Hyde\Framework\Hyde; use Hyde\Framework\Models\Pages\MarkdownPost; -use Hyde\Framework\Models\Parsers\MarkdownPostParser; use Hyde\Testing\TestCase; /** diff --git a/packages/framework/tests/Unit/SourceFilesInCustomDirectoriesCanBeCompiledTest.php b/packages/framework/tests/Unit/SourceFilesInCustomDirectoriesCanBeCompiledTest.php index d550e79426a..74055157c6c 100644 --- a/packages/framework/tests/Unit/SourceFilesInCustomDirectoriesCanBeCompiledTest.php +++ b/packages/framework/tests/Unit/SourceFilesInCustomDirectoriesCanBeCompiledTest.php @@ -7,7 +7,6 @@ use Hyde\Framework\Models\Pages\DocumentationPage; use Hyde\Framework\Models\Pages\MarkdownPage; use Hyde\Framework\Models\Pages\MarkdownPost; -use Hyde\Framework\Services\DiscoveryService; use Hyde\Framework\StaticPageBuilder; use Hyde\Testing\TestCase; use Illuminate\Support\Facades\Config;