ShaarliParsedown: add PHPDoc/comments

This commit is contained in:
ArthurHoaro 2021-02-04 10:53:23 +01:00
parent 9ef8555ad2
commit a1cd7a3b2f
3 changed files with 43 additions and 2 deletions

View file

@ -4,6 +4,11 @@
namespace Shaarli\Formatter\Parsedown; namespace Shaarli\Formatter\Parsedown;
/**
* Parsedown extension for Shaarli.
*
* Extension for both Parsedown and ParsedownExtra centralized in ShaarliParsedownTrait.
*/
class ShaarliParsedown extends \Parsedown class ShaarliParsedown extends \Parsedown
{ {
use ShaarliParsedownTrait; use ShaarliParsedownTrait;

View file

@ -4,6 +4,11 @@
namespace Shaarli\Formatter\Parsedown; namespace Shaarli\Formatter\Parsedown;
/**
* ParsedownExtra extension for Shaarli.
*
* Extension for both Parsedown and ParsedownExtra centralized in ShaarliParsedownTrait.
*/
class ShaarliParsedownExtra extends \ParsedownExtra class ShaarliParsedownExtra extends \ParsedownExtra
{ {
use ShaarliParsedownTrait; use ShaarliParsedownTrait;

View file

@ -6,24 +6,48 @@
use Shaarli\Formatter\BookmarkDefaultFormatter as Formatter; use Shaarli\Formatter\BookmarkDefaultFormatter as Formatter;
/**
* Trait used for Parsedown and ParsedownExtra extension.
*
* Extended:
* - Format links properly in search context
*/
trait ShaarliParsedownTrait trait ShaarliParsedownTrait
{ {
/**
* @inheritDoc
*/
protected function inlineLink($excerpt) protected function inlineLink($excerpt)
{ {
return $this->shaarliFormatLink(parent::inlineLink($excerpt), true); return $this->shaarliFormatLink(parent::inlineLink($excerpt), true);
} }
/**
* @inheritDoc
*/
protected function inlineUrl($excerpt) protected function inlineUrl($excerpt)
{ {
return $this->shaarliFormatLink(parent::inlineUrl($excerpt), false); 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 protected function shaarliFormatLink(?array $link, bool $fullWrap): ?array
{ {
// If open and clean search tokens are found in the link, process.
if ( if (
is_array($link) is_array($link)
&& strpos($link['element']['attributes']['href'], Formatter::SEARCH_HIGHLIGHT_OPEN) !== false && 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_CLOSE) !== false
) { ) {
$link['element']['attributes']['href'] = $this->shaarliRemoveSearchTokens( $link['element']['attributes']['href'] = $this->shaarliRemoveSearchTokens(
$link['element']['attributes']['href'] $link['element']['attributes']['href']
@ -40,6 +64,13 @@ protected function shaarliFormatLink(?array $link, bool $fullWrap): ?array
return $link; return $link;
} }
/**
* Remove open and close tags from provided string.
*
* @param string $entry input
*
* @return string Striped input
*/
protected function shaarliRemoveSearchTokens(string $entry): string protected function shaarliRemoveSearchTokens(string $entry): string
{ {
$entry = str_replace(Formatter::SEARCH_HIGHLIGHT_OPEN, '', $entry); $entry = str_replace(Formatter::SEARCH_HIGHLIGHT_OPEN, '', $entry);