-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Writing Extensions
Christian Tietze edited this page Mar 5, 2024
·
19 revisions
This example disables Header elements. That is, both Atx Header and Setext Header elements.
class Extension extends Parsedown
{
protected function blockHeader($Line)
{
return;
}
protected function blockSetextHeader($Line)
{
return;
}
}
You can use the same approach for other elements types. This includes inline element types. For example, to disable Image elements you should override inlineImage
.
Note that to disable all headers you should also disable support for HTML. You can do that by setting the MarkupEscaped
option to true
.
This example prepends a base path to the src
of Image elements.
class Extension extends Parsedown
{
private $baseImagePath = 'http://cdn.example.com/';
protected function inlineImage($Excerpt)
{
$Image = parent::inlineImage($Excerpt);
$Image['element']['attributes']['src'] = $this->baseImagePath . $Image['element']['attributes']['src'];
return $Image;
}
}
You can use the same approach for other element types.
This example adds a ColoredText element. You can find a description of this element at https://github.com/erusev/parsedown/issues/262.
class Extension extends Parsedown
{
function __construct()
{
$this->InlineTypes['{'] []= 'ColoredText';
$this->inlineMarkerList .= '{';
}
protected function inlineColoredText($Excerpt)
{
if (preg_match('/^{c:([#\w]\w+)}([^{]+){\/c}/', $Excerpt['text'], $matches))
{
return array(
'extent' => strlen($matches[0]),
'element' => array(
'name' => 'span',
'text' => $matches[2],
'attributes' => array(
'style' => 'color: '.$matches[1],
),
),
);
}
}
}
You can use the same approach for other element types.