Parse info page markdown in handler rather than in template.
This commit is contained in:
parent
bfe69276b8
commit
934aadec37
2 changed files with 11 additions and 17 deletions
|
@ -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,
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
Loading…
Add table
Reference in a new issue