diff --git a/src/Components/Blocks/SetextHeader.php b/src/Components/Blocks/SetextHeader.php new file mode 100644 index 0000000..a78b988 --- /dev/null +++ b/src/Components/Blocks/SetextHeader.php @@ -0,0 +1,74 @@ +text = $text; + $this->level = $level; + $this->acquired = true; + } + + /** + * @param Context $Context + * @param Block|null $Block + * @param State|null $State + * @return static|null + */ + public static function build( + Context $Context, + Block $Block = null, + State $State = null + ) { + if (! isset($Block) || ! $Block instanceof Paragraph || $Context->previousEmptyLines() > 0) { + return null; + } + + if ($Context->line()->indent() < 4 and \chop(\chop($Context->line()->text(), " \t"), $Context->line()->text()[0]) === '') { + $level = $Context->line()->text()[0] === '=' ? 1 : 2; + + return new self($Block->text(), $level); + } + + return null; + } + + /** + * @return Handler + */ + public function stateRenderable(Parsedown $Parsedown) + { + return new Handler( + /** @return Element */ + function (State $State) use ($Parsedown) { + return new Element( + 'h' . \strval($this->level), + [], + $State->applyTo($Parsedown->lineElements($this->text)) + ); + } + ); + } +} diff --git a/src/Parsedown.php b/src/Parsedown.php index 5352931..f091cfe 100644 --- a/src/Parsedown.php +++ b/src/Parsedown.php @@ -334,22 +334,6 @@ class Parsedown return $Block; } - # - # Setext - - protected function blockSetextHeader(Context $Context, array $Block = null) - { - if (! isset($Block) or $Block['type'] !== 'Paragraph' or $Context->previousEmptyLines() > 0) { - return; - } - - if ($Context->line()->indent() < 4 and \chop(\chop($Context->line()->text(), " \t"), $Context->line()->text()[0]) === '') { - $Block['element']['name'] = $Context->line()->text()[0] === '=' ? 'h1' : 'h2'; - - return $Block; - } - } - # # Markup