diff --git a/src/includes/api/TasksController.php b/src/includes/api/TasksController.php index 05e8c47..2cd6480 100644 --- a/src/includes/api/TasksController.php +++ b/src/includes/api/TasksController.php @@ -6,7 +6,6 @@ Licensed under the GNU GPL version 2 or any later. See file COPYRIGHT for details. */ -require_once(MTTINC. 'markup.php'); require_once(MTTINC. 'smartsyntax.php'); class TasksController extends ApiController { diff --git a/src/includes/markup.php b/src/includes/markup.php index 168c825..29b8bd7 100644 --- a/src/includes/markup.php +++ b/src/includes/markup.php @@ -2,7 +2,7 @@ /* This file is a part of myTinyTodo. - (C) Copyright 2021-2022 Max Pozdeev + (C) Copyright 2021-2025 Max Pozdeev Licensed under the GNU GPL version 2 or any later. See file COPYRIGHT for details. */ @@ -19,18 +19,35 @@ final class MTTMarkdown /** @var MTTMarkdownInterface */ private static $instance; + /** @var string */ + private static $instanceClass = MTTParsedownWrapper::class; + //private static $instanceClass = MTTCommonmarkWrapper::class; + /** * * @return MTTMarkdownInterface */ public static function instance() : MTTMarkdownInterface { - if (!isset(self::$instance)) { - self::$instance = new MTTParsedownWrapper(); - //self::$instance = new MTTCommonmarkWrapper(); - } + if (isset(self::$instance)) + return self::$instance; + + // if (do_filter('markdownConverterClass', self::$instanceClass, $newClass) && $newClass) { + // self::setInstanceClass($newClass); + // } + + self::$instance = new self::$instanceClass(); return self::$instance; } + + public static function setInstanceClass(string $class) + { + if (!is_a($class, MTTMarkdownInterface::class, true)) { + throw new Exception("Class '$class' is not a MTTMarkdownInterface"); + } + self::$instanceClass = $class; + self::$instance = null; + } } function noteMarkup($note, $toExternal = false) diff --git a/src/init.php b/src/init.php index 80a5a14..a2e3d2d 100644 --- a/src/init.php +++ b/src/init.php @@ -41,6 +41,7 @@ require_once(MTTINC. 'class.dbcore.php'); require_once(MTTINC. 'class.config.php'); require_once(MTTINC. 'notifications.php'); require_once(MTTINC. 'filters.php'); +require_once(MTTINC. 'markup.php'); configureDbConnection();