diff --git a/public_html/media/css/core.css b/public_html/media/css/core.css index 5a9b0de9..ba757b38 100644 --- a/public_html/media/css/core.css +++ b/public_html/media/css/core.css @@ -320,3 +320,21 @@ pre.debug { text-align: left; color: black; } + +.spoiler:before, +.spoiler:after { + color: gray; +} +.spoiler:before { + content: '[ '; +} +.spoiler:after { + content: ' ]'; +} +.spoiler { + background: #eee; + color: #eee; +} +.spoiler:hover { + color: black; +} diff --git a/src/CustomMarkdown.php b/src/CustomMarkdown.php new file mode 100644 index 00000000..997172d4 --- /dev/null +++ b/src/CustomMarkdown.php @@ -0,0 +1,42 @@ +no_markup = true; + $this->span_gamut += ['doSpoilers' => 71]; + $this->span_gamut += ['doPosts' => 8]; + $this->span_gamut += ['doTags' => 9]; + parent::__construct(); + } + + protected function doHardBreaks($text) + { + return preg_replace_callback('/\n/', array(&$this, '_doHardBreaks_callback'), $text); + } + + protected function doSpoilers($text) + { + if (is_array($text)) + { + $text = $this->hashPart('') . $text[1] . $this->hashPart(''); + } + return preg_replace_callback('{\[spoiler\]((?:[^\[]|\[(?!\/?spoiler\])|(?R))+)\[\/spoiler\]}is', [__CLASS__, 'doSpoilers'], $text); + } + + protected function doPosts($text) + { + return preg_replace_callback('/@(\d+)/', function($x) + { + return $this->hashPart('') . $x[0] . $this->hashPart(''); + }, $text); + } + + protected function doTags($text) + { + return preg_replace_callback('/#([a-zA-Z0-9_-]+)/', function($x) + { + return $this->hashPart('') . $x[0] . $this->hashPart(''); + }, $text); + } +} diff --git a/src/Helpers/TextHelper.php b/src/Helpers/TextHelper.php index fc2b02b8..cedff63a 100644 --- a/src/Helpers/TextHelper.php +++ b/src/Helpers/TextHelper.php @@ -144,6 +144,7 @@ class TextHelper public static function parseMarkdown($text) { - return \Michelf\Markdown::defaultTransform($text); + #$text = strip_tags($text); + return CustomMarkdown::defaultTransform($text); } }