Parsedown extension to wrap single-image lines in <figure>, not <p>. Public domain. See https://github.com/erusev/parsedown/issues/180#issuecomment-451486639
<?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; | |
} | |
} |
This comment has been minimized.
This comment has been minimized.
Thanks for reaching out Anas! Afaik Parsedown does not support plugins or modules, so the only way is to subclass |
This comment has been minimized.
This comment has been minimized.
anasram
commented
Aug 31, 2019
Hi Krzysztof! Please notice that |
This comment has been minimized.
This comment has been minimized.
That's correct, thank you for pointing that out! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
anasram commentedAug 4, 2019
Thank you Krzysztof! I've been looking for such a solution for a while.
height
andwidth
HTML properties and values automatically to<img>
elements?