<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/*
(c) Parsedown - https://parsedown.org/
Markdown Syntax: https://spec.commonmark.org/
*/
function parser_markdown_autoload()
{
mso_hook_add('parser_register', 'parser_markdown_register');
}
function parser_markdown_register($parsers = array())
{
$parsers['Markdown'] = array( // имя парсера
'content' => 'parser_markdown_content', // функция обработчик на хуке content
'content_post_edit' => 'parser_markdown_post_edit', // функция перед отправкой в БД
);
return $parsers;
}
function parser_markdown_content($text = '')
{
return autotag_markdown($text);
}
function parser_markdown_post_edit($text = '')
{
// глюк FireFox исправлем замену абсолютного пути src на абсолютный
$text = str_replace('src="../../', 'src="' . getinfo('site_url'), $text);
$text = str_replace('src="../', 'src="' . getinfo('site_url'), $text);
return $text;
}
function autotag_markdown($text)
{
$text = str_replace("\r", "", $text); // win-dos
$text = "\n" . $text . "\n";
$fn = __DIR__ . '/Parsedown/Parsedown.php';
if (file_exists($fn))
require_once $fn;
else
return $text;
$Parsedown = new Parsedown();
// костыль для нормальной обработки <!DOCTYPE HTML> в этом парсере
$text = str_replace('<!DOCTYPE HTML>', '<!-- <!DOCTYPE HTML> -->', $text);
$text = $Parsedown->text($text);
$text = str_replace('<!-- <!DOCTYPE HTML> -->', '<!DOCTYPE HTML>', $text);
return trim($text);
}
# end of file