My personal blog. https://blog.airikr.me
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.
 
 
 

49 lines
1.3 KiB

<?php
class FigureExtParsedown extends Parsedown {
// Matches Markdown image definition
private $MarkdownImageRegex = "~^!\[.*?\]\(.*?\)$~";
public function __construct () {
// Add blockFigure to non-exclusive handlers for text starting with !
$this->BlockTypes['!'][] = 'Figure';
}
protected function blockFigure($Line) {
// If line does not match image def, don't handle it
if (1 !== preg_match($this->MarkdownImageRegex, $Line['text'])) {
return;
}
$InlineImage = $this->inlineImage($Line);
if (!isset($InlineImage)) {
return;
}
$FigureBlock = array(
'element' => array(
'name' => 'figure',
'handler' => 'elements',
'text' => array(
$InlineImage['element']
)
),
);
// Add figcaption if title set
if (!empty($InlineImage['element']['attributes']['title'])) {
$InlineFigcaption = array(
'element' => array(
'name' => 'figcaption',
'text' => $InlineImage['element']['attributes']['title']
),
);
$FigureBlock['element']['text'][] = $InlineFigcaption['element'];
}
return $FigureBlock;
}
}