47 lines
1.4 KiB
PHP
47 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;
|
|
}
|
|
}
|