misuzu/src/Parsers/MarkdownParser.php

48 lines
1.4 KiB
PHP

<?php
namespace Misuzu\Parsers;
use Parsedown;
class MarkdownParser extends Parsedown implements ParserInterface {
public function parseText(string $text): string {
return $this->text($text);
}
public function parseLine(string $line): string {
return $this->line($line);
}
protected function inlineImage($excerpt) {
if(!isset($excerpt['text'][1]) || $excerpt['text'][1] !== '[')
return;
$excerpt['text'] = substr($excerpt['text'], 1);
$link = $this->inlineLink($excerpt);
if($link === null)
return;
$inline = [
'extent' => $link['extent'] + 1,
'element' => [
'name' => 'span',
'attributes' => [
'class' => 'js-msz-embed-media',
'data-msz-embed-url' => $link['element']['attributes']['href'],
'data-msz-embed-alt' => $link['element']['text'],
],
'rawHtml' => sprintf(
'<noscript><a href="%1$s" target="_blank" class="link" rel="noopener noreferrer">%1$s</a></noscript>',
htmlspecialchars($link['element']['attributes']['href'])
),
],
];
$inline['element']['attributes'] += $link['element']['attributes'];
unset($inline['element']['attributes']['href']);
return $inline;
}
}