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 ) { $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; } /** * 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); $entry = str_replace(Formatter::SEARCH_HIGHLIGHT_CLOSE, '', $entry); return $entry; } }