summaryrefslogtreecommitdiff
path: root/app/Filter.php
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@gmail.com>2017-10-17 10:47:24 +0100
committerGreg Roach <fisharebest@gmail.com>2017-10-17 10:47:36 +0100
commit22acdb080c4429b40c310f5ecb7f4a84429476cc (patch)
tree491e85bf7a2eb3f3a0d3b7802e830563ab19f08a /app/Filter.php
parent0782630e59a22703a972868e610ece13dc6107c7 (diff)
downloadwebtrees-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.php35
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);
}
/**