DefaultFormatter: - format 'a' tag content and not href attribute - format hashtags properly Markdown(Extra)Formatter: - Extend Parsedown to format highlight properly: https://github.com/erusev/parsedown/wiki/Tutorial:-Create-Extensions Fixes #1681
51 lines
1.4 KiB
PHP
51 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Shaarli\Formatter\Parsedown;
|
|
|
|
use Shaarli\Formatter\BookmarkDefaultFormatter as Formatter;
|
|
|
|
trait ShaarliParsedownTrait
|
|
{
|
|
protected function inlineLink($excerpt)
|
|
{
|
|
return $this->shaarliFormatLink(parent::inlineLink($excerpt), true);
|
|
}
|
|
|
|
protected function inlineUrl($excerpt)
|
|
{
|
|
return $this->shaarliFormatLink(parent::inlineUrl($excerpt), false);
|
|
}
|
|
|
|
protected function shaarliFormatLink(?array $link, bool $fullWrap): ?array
|
|
{
|
|
if (
|
|
is_array($link)
|
|
&& strpos($link['element']['attributes']['href'], Formatter::SEARCH_HIGHLIGHT_OPEN) !== false
|
|
&& strpos($link['element']['attributes']['href'], Formatter::SEARCH_HIGHLIGHT_CLOSE) !== false
|
|
) {
|
|
$link['element']['attributes']['href'] = $this->shaarliRemoveSearchTokens(
|
|
$link['element']['attributes']['href']
|
|
);
|
|
|
|
if ($fullWrap) {
|
|
$link['element']['text'] = Formatter::SEARCH_HIGHLIGHT_OPEN .
|
|
$link['element']['text'] .
|
|
Formatter::SEARCH_HIGHLIGHT_CLOSE
|
|
;
|
|
}
|
|
}
|
|
|
|
return $link;
|
|
}
|
|
|
|
protected function shaarliRemoveSearchTokens(string $entry): string
|
|
{
|
|
$entry = str_replace(Formatter::SEARCH_HIGHLIGHT_OPEN, '', $entry);
|
|
$entry = str_replace(Formatter::SEARCH_HIGHLIGHT_CLOSE, '', $entry);
|
|
|
|
return $entry;
|
|
}
|
|
}
|