Parse info page markdown in handler rather than in template.

This commit is contained in:
flash 2020-05-21 15:11:58 +00:00
parent bfe69276b8
commit 934aadec37
2 changed files with 11 additions and 17 deletions

View file

@ -3,6 +3,7 @@ namespace Misuzu\Http\Handlers;
use HttpResponse;
use HttpRequest;
use Misuzu\Parsers\Parser;
final class InfoHandler extends Handler {
public function index(HttpResponse $response): void {
@ -24,42 +25,35 @@ final class InfoHandler extends Handler {
if($isMisuzuDoc) {
$filename = substr($name, 7);
$filename = empty($filename) ? 'README' : strtoupper($filename);
if($filename !== 'README') {
if($filename !== 'README')
$titleSuffix = ' - Misuzu Project';
}
} else {
$filename = strtolower($name);
}
} else $filename = strtolower($name);
if(!preg_match('#^([A-Za-z0-9_]+)$#', $filename)) {
if(!preg_match('#^([A-Za-z0-9_]+)$#', $filename))
return 404;
}
if($filename !== 'LICENSE') {
if($filename !== 'LICENSE')
$filename .= '.md';
}
$filename = MSZ_ROOT . ($isMisuzuDoc ? '/' : '/docs/') . $filename;
$document['content'] = is_file($filename) ? file_get_contents($filename) : '';
if(empty($document['content'])) {
if(empty($document['content']))
return 404;
}
if(empty($document['title'])) {
if(starts_with($document['content'], '# ')) {
$titleOffset = strpos($document['content'], "\n");
$document['title'] = trim(substr($document['content'], 2, $titleOffset - 1));
$document['content'] = substr($document['content'], $titleOffset);
} else {
} else
$document['title'] = ucfirst(basename($filename));
}
if(!empty($titleSuffix)) {
if(!empty($titleSuffix))
$document['title'] .= $titleSuffix;
}
}
$document['content'] = Parser::instance(Parser::MARKDOWN)->parseText($document['content']);
$response->setTemplate('info.view', [
'document' => $document,

View file

@ -8,7 +8,7 @@
{{ container_title(document.title) }}
<div class="container__content markdown">
{{ document.content|parse_text(constant('\\Misuzu\\Parsers\\Parser::MARKDOWN'))|raw }}
{{ document.content|raw }}
</div>
</div>
{% endblock %}