ShaarliParsedown: add PHPDoc/comments
This commit is contained in:
parent
9ef8555ad2
commit
a1cd7a3b2f
3 changed files with 43 additions and 2 deletions
|
@ -4,6 +4,11 @@ declare(strict_types=1);
|
|||
|
||||
namespace Shaarli\Formatter\Parsedown;
|
||||
|
||||
/**
|
||||
* Parsedown extension for Shaarli.
|
||||
*
|
||||
* Extension for both Parsedown and ParsedownExtra centralized in ShaarliParsedownTrait.
|
||||
*/
|
||||
class ShaarliParsedown extends \Parsedown
|
||||
{
|
||||
use ShaarliParsedownTrait;
|
||||
|
|
|
@ -4,6 +4,11 @@ declare(strict_types=1);
|
|||
|
||||
namespace Shaarli\Formatter\Parsedown;
|
||||
|
||||
/**
|
||||
* ParsedownExtra extension for Shaarli.
|
||||
*
|
||||
* Extension for both Parsedown and ParsedownExtra centralized in ShaarliParsedownTrait.
|
||||
*/
|
||||
class ShaarliParsedownExtra extends \ParsedownExtra
|
||||
{
|
||||
use ShaarliParsedownTrait;
|
||||
|
|
|
@ -6,24 +6,48 @@ namespace Shaarli\Formatter\Parsedown;
|
|||
|
||||
use Shaarli\Formatter\BookmarkDefaultFormatter as Formatter;
|
||||
|
||||
/**
|
||||
* Trait used for Parsedown and ParsedownExtra extension.
|
||||
*
|
||||
* Extended:
|
||||
* - Format links properly in search context
|
||||
*/
|
||||
trait ShaarliParsedownTrait
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function inlineLink($excerpt)
|
||||
{
|
||||
return $this->shaarliFormatLink(parent::inlineLink($excerpt), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function inlineUrl($excerpt)
|
||||
{
|
||||
return $this->shaarliFormatLink(parent::inlineUrl($excerpt), false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Properly format markdown link:
|
||||
* - remove highlight tags from HREF attribute
|
||||
* - (optional) add highlight tags to link caption
|
||||
*
|
||||
* @param array|null $link Parsedown formatted link array.
|
||||
* It can be empty.
|
||||
* @param bool $fullWrap Add highlight tags the whole link caption
|
||||
*
|
||||
* @return array|null
|
||||
*/
|
||||
protected function shaarliFormatLink(?array $link, bool $fullWrap): ?array
|
||||
{
|
||||
// If open and clean search tokens are found in the link, process.
|
||||
if (
|
||||
is_array($link)
|
||||
&& strpos($link['element']['attributes']['href'], Formatter::SEARCH_HIGHLIGHT_OPEN) !== false
|
||||
&& strpos($link['element']['attributes']['href'], Formatter::SEARCH_HIGHLIGHT_CLOSE) !== false
|
||||
&& 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']
|
||||
|
@ -40,6 +64,13 @@ trait ShaarliParsedownTrait
|
|||
return $link;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove open and close tags from provided string.
|
||||
*
|
||||
* @param string $entry input
|
||||
*
|
||||
* @return string Striped input
|
||||
*/
|
||||
protected function shaarliRemoveSearchTokens(string $entry): string
|
||||
{
|
||||
$entry = str_replace(Formatter::SEARCH_HIGHLIGHT_OPEN, '', $entry);
|
||||
|
|
Loading…
Reference in a new issue