You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
super-gear-directus/app/Helpers/MarkdownHelper.php

50 lines
1.2 KiB

<?php
namespace App\Helpers;
use Parsedown;
/**
* Helper to extend Parsedown
*
* @author Björn Hase, Tentakelfabrik
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitea.tentakelfabrik.de/Tentakelfabrik/super-gear-directus
*
*/
class MarkdownHelper extends Parsedown
{
/**
*
* @var string
*/
const EXTERNAL_LINK = "/^(http|https):\/\//";
const INNER_BRACKETS = "/\){(.*?)\}/";
const TARGET_BLANK = "_blank";
const DIVIDER_METHOD = ':';
const DIVIDER_SIZES = 'x';
/**
* extend default function, if a link has http|https in url,
* then handle this link as external and set target to _blank
*
* @param array $excerpt
* @return array
*/
protected function inlineLink($excerpt)
{
$result = parent::inlineLink($excerpt);
if (is_array($result)) {
if (isset($result['element']['attributes'])) {
if (preg_match(self::EXTERNAL_LINK, $result['element']['attributes']['href'])) {
$result['element']['attributes']['target'] = self::TARGET_BLANK;
}
}
return $result;
}
}
}