28 lines
872 B
PHP
28 lines
872 B
PHP
<?php
|
|
namespace Misuzu\Parsers\BBCode\Tags;
|
|
|
|
use Misuzu\Parsers\BBCode\BBCodeTag;
|
|
|
|
final class CodeTag extends BBCodeTag {
|
|
public function parseText(string $text): string {
|
|
return preg_replace_callback(
|
|
'/\[code(?:\=([a-z]+))?\](.+?)\[\/code\]/s',
|
|
function ($matches) {
|
|
$class = strlen($matches[1]) ? "lang-{$matches[1]}" : '';
|
|
$text = strtr($matches[2], [
|
|
'[' => '[',
|
|
']' => ']',
|
|
'<' => '<',
|
|
'>' => '>',
|
|
"\r\n" => '',
|
|
"\r" => '',
|
|
"\n" => '',
|
|
]);
|
|
|
|
return "<pre class='bbcode__code'><code class='bbcode__code-container {$class}'>{$text}</code></pre>";
|
|
},
|
|
$text
|
|
);
|
|
}
|
|
}
|