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 HttpResponse;
use HttpRequest; use HttpRequest;
use Misuzu\Parsers\Parser;
final class InfoHandler extends Handler { final class InfoHandler extends Handler {
public function index(HttpResponse $response): void { public function index(HttpResponse $response): void {
@ -24,43 +25,36 @@ final class InfoHandler extends Handler {
if($isMisuzuDoc) { if($isMisuzuDoc) {
$filename = substr($name, 7); $filename = substr($name, 7);
$filename = empty($filename) ? 'README' : strtoupper($filename); $filename = empty($filename) ? 'README' : strtoupper($filename);
if($filename !== 'README')
if($filename !== 'README') {
$titleSuffix = ' - Misuzu Project'; $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; return 404;
}
if($filename !== 'LICENSE') { if($filename !== 'LICENSE')
$filename .= '.md'; $filename .= '.md';
}
$filename = MSZ_ROOT . ($isMisuzuDoc ? '/' : '/docs/') . $filename; $filename = MSZ_ROOT . ($isMisuzuDoc ? '/' : '/docs/') . $filename;
$document['content'] = is_file($filename) ? file_get_contents($filename) : ''; $document['content'] = is_file($filename) ? file_get_contents($filename) : '';
if(empty($document['content'])) { if(empty($document['content']))
return 404; return 404;
}
if(empty($document['title'])) { if(empty($document['title'])) {
if(starts_with($document['content'], '# ')) { if(starts_with($document['content'], '# ')) {
$titleOffset = strpos($document['content'], "\n"); $titleOffset = strpos($document['content'], "\n");
$document['title'] = trim(substr($document['content'], 2, $titleOffset - 1)); $document['title'] = trim(substr($document['content'], 2, $titleOffset - 1));
$document['content'] = substr($document['content'], $titleOffset); $document['content'] = substr($document['content'], $titleOffset);
} else { } else
$document['title'] = ucfirst(basename($filename)); $document['title'] = ucfirst(basename($filename));
}
if(!empty($titleSuffix)) { if(!empty($titleSuffix))
$document['title'] .= $titleSuffix; $document['title'] .= $titleSuffix;
}
} }
$document['content'] = Parser::instance(Parser::MARKDOWN)->parseText($document['content']);
$response->setTemplate('info.view', [ $response->setTemplate('info.view', [
'document' => $document, 'document' => $document,
]); ]);

View file

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