diff --git a/src/Contracts/AbstractMarkdownPage.php b/src/Contracts/AbstractMarkdownPage.php index 95372bbd..45baf406 100644 --- a/src/Contracts/AbstractMarkdownPage.php +++ b/src/Contracts/AbstractMarkdownPage.php @@ -3,9 +3,9 @@ namespace Hyde\Framework\Contracts; use Hyde\Framework\Actions\SourceFileParser; -use Hyde\Framework\Facades\Markdown as MarkdownFacade; use Hyde\Framework\Models\FrontMatter; use Hyde\Framework\Models\Markdown; +use Hyde\Framework\Models\Markdown as MarkdownFacade; /** * The base class for all Markdown-based Page Models. diff --git a/src/Facades/Includes.php b/src/Facades/Includes.php index 924bb4db..d26e5547 100644 --- a/src/Facades/Includes.php +++ b/src/Facades/Includes.php @@ -4,6 +4,7 @@ use Hyde\Framework\Contracts\IncludeFacadeContract; use Hyde\Framework\Hyde; +use Hyde\Framework\Models\Markdown; use Illuminate\Support\Facades\Blade; class Includes implements IncludeFacadeContract diff --git a/src/Facades/Markdown.php b/src/Facades/Markdown.php deleted file mode 100644 index fc20cf29..00000000 --- a/src/Facades/Markdown.php +++ /dev/null @@ -1,37 +0,0 @@ -parse() - : app(MarkdownConverter::class)->convert($markdown); - } -} diff --git a/src/Models/Markdown.php b/src/Models/Markdown.php index e14b723f..c6e6ad92 100644 --- a/src/Models/Markdown.php +++ b/src/Models/Markdown.php @@ -2,7 +2,8 @@ namespace Hyde\Framework\Models; -use Hyde\Framework\Facades\Markdown as MarkdownFacade; +use Hyde\Framework\Modules\Markdown\MarkdownConverter; +use Hyde\Framework\Services\MarkdownService; use Illuminate\Contracts\Support\Arrayable; /** @@ -24,9 +25,9 @@ public static function fromFile(string $localFilepath): static return MarkdownDocument::parseFile($localFilepath)->markdown(); } - public function render(): string + public function compile(): string { - return MarkdownFacade::render($this->body); + return static::render($this->body); } public function __toString(): string @@ -48,4 +49,19 @@ public function body(): string { return $this->body; } + + /** + * Render a Markdown string into HTML. + * + * If a source model is provided, the Markdown will be converted using the dynamic MarkdownService, + * otherwise, the pre-configured singleton from the service container will be used instead. + * + * @return string $html + */ + public static function render(string $markdown, ?string $sourceModel = null): string + { + return $sourceModel !== null + ? (new MarkdownService($markdown, $sourceModel))->parse() + : app(MarkdownConverter::class)->convert($markdown); + } } diff --git a/tests/Feature/Services/HydeSmartDocsTest.php b/tests/Feature/Services/HydeSmartDocsTest.php index 0793b163..cd473522 100644 --- a/tests/Feature/Services/HydeSmartDocsTest.php +++ b/tests/Feature/Services/HydeSmartDocsTest.php @@ -2,8 +2,8 @@ namespace Hyde\Framework\Testing\Feature\Services; -use Hyde\Framework\Facades\Markdown; use Hyde\Framework\Hyde; +use Hyde\Framework\Models\Markdown; use Hyde\Framework\Models\Pages\DocumentationPage; use Hyde\Framework\Services\HydeSmartDocs; use Hyde\Testing\TestCase; diff --git a/tests/Unit/MarkdownDocumentTest.php b/tests/Unit/MarkdownDocumentTest.php index 728f7b50..0d2c3267 100644 --- a/tests/Unit/MarkdownDocumentTest.php +++ b/tests/Unit/MarkdownDocumentTest.php @@ -42,7 +42,7 @@ public function test_magic_to_string_method_returns_body() public function test_render_method_returns_rendered_html() { $document = new MarkdownDocument([], 'Hello, world!'); - $this->assertEquals("

Hello, world!

\n", $document->markdown->render()); + $this->assertEquals("

Hello, world!

\n", $document->markdown->compile()); } public function test_parse_method_parses_a_file_using_the_markdown_file_service() diff --git a/tests/Unit/MarkdownFacadeTest.php b/tests/Unit/MarkdownFacadeTest.php index a46c60b4..d20416ae 100644 --- a/tests/Unit/MarkdownFacadeTest.php +++ b/tests/Unit/MarkdownFacadeTest.php @@ -2,13 +2,13 @@ namespace Hyde\Framework\Testing\Unit; -use Hyde\Framework\Facades\Markdown; +use Hyde\Framework\Models\Markdown; use Hyde\Testing\TestCase; /** * Class MarkdownConverterTest. * - * @covers \Hyde\Framework\Facades\Markdown + * @covers \Hyde\Framework\Models\Markdown */ class MarkdownFacadeTest extends TestCase {