diff options
| author | Greg Roach <fisharebest@gmail.com> | 2017-10-17 10:47:24 +0100 |
|---|---|---|
| committer | Greg Roach <fisharebest@gmail.com> | 2017-10-17 10:47:36 +0100 |
| commit | 22acdb080c4429b40c310f5ecb7f4a84429476cc (patch) | |
| tree | 491e85bf7a2eb3f3a0d3b7802e830563ab19f08a /app/Filter.php | |
| parent | 0782630e59a22703a972868e610ece13dc6107c7 (diff) | |
| download | webtrees-22acdb080c4429b40c310f5ecb7f4a84429476cc.tar.gz webtrees-22acdb080c4429b40c310f5ecb7f4a84429476cc.tar.bz2 webtrees-22acdb080c4429b40c310f5ecb7f4a84429476cc.zip | |
Fix: #479 #712 - replace markdown-extra with commonmark, add autolinking for XREFs
Diffstat (limited to 'app/Filter.php')
| -rw-r--r-- | app/Filter.php | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/app/Filter.php b/app/Filter.php index e522530c13..e77d54506a 100644 --- a/app/Filter.php +++ b/app/Filter.php @@ -15,9 +15,11 @@ */ namespace Fisharebest\Webtrees; -use HTMLPurifier; -use HTMLPurifier_Config; -use Michelf\MarkdownExtra; +use League\CommonMark\Converter; +use League\CommonMark\DocParser; +use League\CommonMark\Environment; +use League\CommonMark\HtmlRenderer; +use Webuni\CommonMark\TableExtension\TableExtension; /** * Filter input and escape output. @@ -41,7 +43,7 @@ class Filter { public static function formatText($text, Tree $WT_TREE) { switch ($WT_TREE->getPreference('FORMAT_TEXT')) { case 'markdown': - return '<div class="markdown" dir="auto">' . self::markdown($text) . '</div>'; + return '<div class="markdown" dir="auto">' . self::markdown($text, $WT_TREE) . '</div>'; default: return '<div style="white-space: pre-wrap;" dir="auto">' . self::expandUrls($text) . '</div>'; } @@ -68,28 +70,19 @@ class Filter { * Format a block of text, using "Markdown". * * @param string $text + * @param Tree tree * * @return string */ - public static function markdown($text) { - $parser = new MarkdownExtra; - $parser->empty_element_suffix = '>'; - $parser->no_markup = true; - $text = $parser->transform($text); + public static function markdown($text, Tree $tree) { + $environment = Environment::createCommonMarkEnvironment(); + $environment->mergeConfig(['html_input' => 'escape']); + $environment->addExtension(new TableExtension()); + $environment->addInlineParser(new MarkdownXrefParser($tree)); - // HTMLPurifier needs somewhere to write temporary files - $HTML_PURIFIER_CACHE_DIR = WT_DATA_DIR . 'html_purifier_cache'; + $converter = new Converter(new DocParser($environment), new HtmlRenderer($environment)); - if (!is_dir($HTML_PURIFIER_CACHE_DIR)) { - mkdir($HTML_PURIFIER_CACHE_DIR); - } - - $config = HTMLPurifier_Config::createDefault(); - $config->set('Cache.SerializerPath', $HTML_PURIFIER_CACHE_DIR); - $purifier = new HTMLPurifier($config); - $text = $purifier->purify($text); - - return $text; + return $converter->convertToHtml($text); } /** |
