diff --git a/src/Components/Block.php b/src/Components/Block.php index 9fe14e1..4dcac78 100644 --- a/src/Components/Block.php +++ b/src/Components/Block.php @@ -10,13 +10,13 @@ interface Block extends Component { /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ); } diff --git a/src/Components/Blocks/BlockQuote.php b/src/Components/Blocks/BlockQuote.php index 9f224b4..8aa6597 100644 --- a/src/Components/Blocks/BlockQuote.php +++ b/src/Components/Blocks/BlockQuote.php @@ -29,14 +29,14 @@ final class BlockQuote implements ContinuableBlock /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { if (\preg_match('/^(>[ \t]?+)(.*+)/', $Context->line()->text(), $matches)) { $indentOffset = $Context->line()->indentOffset() + $Context->line()->indent() + \strlen($matches[1]); @@ -57,9 +57,10 @@ final class BlockQuote implements ContinuableBlock /** * @param Context $Context + * @param State $State * @return self|null */ - public function advance(Context $Context) + public function advance(Context $Context, State $State) { if ($Context->previousEmptyLines() > 0) { return null; diff --git a/src/Components/Blocks/FencedCode.php b/src/Components/Blocks/FencedCode.php index c95d8d9..1dca837 100644 --- a/src/Components/Blocks/FencedCode.php +++ b/src/Components/Blocks/FencedCode.php @@ -45,14 +45,14 @@ final class FencedCode implements ContinuableBlock /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { $marker = \substr($Context->line()->text(), 0, 1); @@ -77,9 +77,10 @@ final class FencedCode implements ContinuableBlock /** * @param Context $Context + * @param State $State * @return self|null */ - public function advance(Context $Context) + public function advance(Context $Context, State $State) { if ($this->isComplete) { return null; diff --git a/src/Components/Blocks/Header.php b/src/Components/Blocks/Header.php index 157ccba..80190d7 100644 --- a/src/Components/Blocks/Header.php +++ b/src/Components/Blocks/Header.php @@ -31,21 +31,19 @@ final class Header implements Block /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { if ($Context->line()->indent() > 3) { return null; } - $State = $State ?: new State; - $level = \strspn($Context->line()->text(), '#'); if ($level > 6 || $level < 1) { diff --git a/src/Components/Blocks/IndentedCode.php b/src/Components/Blocks/IndentedCode.php index 52a727b..75debe3 100644 --- a/src/Components/Blocks/IndentedCode.php +++ b/src/Components/Blocks/IndentedCode.php @@ -26,14 +26,14 @@ final class IndentedCode implements ContinuableBlock /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { if (isset($Block) && $Block instanceof Paragraph && ! $Context->previousEmptyLines() > 0) { return null; @@ -48,9 +48,10 @@ final class IndentedCode implements ContinuableBlock /** * @param Context $Context + * @param State $State * @return self|null */ - public function advance(Context $Context) + public function advance(Context $Context, State $State) { if ($Context->line()->indent() < 4) { return null; diff --git a/src/Components/Blocks/Markup.php b/src/Components/Blocks/Markup.php index 363f9ab..4630112 100644 --- a/src/Components/Blocks/Markup.php +++ b/src/Components/Blocks/Markup.php @@ -55,14 +55,14 @@ final class Markup implements ContinuableBlock /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { $text = $Context->line()->text(); $rawLine = $Context->line()->rawLine(); @@ -105,9 +105,10 @@ final class Markup implements ContinuableBlock /** * @param Context $Context + * @param State $State * @return self|null */ - public function advance(Context $Context) + public function advance(Context $Context, State $State) { $closed = $this->closed; $type = $this->type; diff --git a/src/Components/Blocks/Paragraph.php b/src/Components/Blocks/Paragraph.php index 81efec2..9656743 100644 --- a/src/Components/Blocks/Paragraph.php +++ b/src/Components/Blocks/Paragraph.php @@ -26,23 +26,24 @@ final class Paragraph implements ContinuableBlock /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { return new self($Context->line()->text()); } /** * @param Context $Context + * @param State $State * @return self|null */ - public function advance(Context $Context) + public function advance(Context $Context, State $State) { if ($Context->previousEmptyLines() > 0) { return null; diff --git a/src/Components/Blocks/Reference.php b/src/Components/Blocks/Reference.php index d6af5b4..3c4ec18 100644 --- a/src/Components/Blocks/Reference.php +++ b/src/Components/Blocks/Reference.php @@ -22,17 +22,15 @@ final class Reference implements StateUpdatingBlock /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { - $State = $State ?: new State; - if (\preg_match( '/^\[(.+?)\]:[ ]*+?(?:[ ]+["\'(](.+)["\')])?[ ]*+$/', $Context->line()->text(), diff --git a/src/Components/Blocks/Rule.php b/src/Components/Blocks/Rule.php index 41bc2e9..3dcd100 100644 --- a/src/Components/Blocks/Rule.php +++ b/src/Components/Blocks/Rule.php @@ -12,14 +12,14 @@ final class Rule implements Block { /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { if ($Context->line()->indent() > 3) { return null; diff --git a/src/Components/Blocks/SetextHeader.php b/src/Components/Blocks/SetextHeader.php index 0df2bc5..d1365b2 100644 --- a/src/Components/Blocks/SetextHeader.php +++ b/src/Components/Blocks/SetextHeader.php @@ -31,14 +31,14 @@ final class SetextHeader implements AcquisitioningBlock /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { if (! isset($Block) || ! $Block instanceof Paragraph || $Context->previousEmptyLines() > 0) { return null; diff --git a/src/Components/Blocks/TList.php b/src/Components/Blocks/TList.php index e5f004a..25d17ab 100644 --- a/src/Components/Blocks/TList.php +++ b/src/Components/Blocks/TList.php @@ -77,14 +77,14 @@ final class TList implements ContinuableBlock /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { list($type, $pattern) = ( \substr($Context->line()->text(), 0, 1) <= '-' @@ -156,9 +156,10 @@ final class TList implements ContinuableBlock /** * @param Context $Context + * @param State $State * @return self|null */ - public function advance(Context $Context) + public function advance(Context $Context, State $State) { if ($Context->previousEmptyLines() > 0 && \end($this->Lis)->isEmpty()) { return null; @@ -218,7 +219,7 @@ final class TList implements ContinuableBlock $this->markerType, $this->markerTypeRegex ); - } elseif ($Context->line()->indent() < $requiredIndent && self::build($Context) !== null) { + } elseif ($Context->line()->indent() < $requiredIndent && self::build($Context, $State) !== null) { return null; } diff --git a/src/Components/Blocks/Table.php b/src/Components/Blocks/Table.php index 8c69661..ed47417 100644 --- a/src/Components/Blocks/Table.php +++ b/src/Components/Blocks/Table.php @@ -45,14 +45,14 @@ final class Table implements AcquisitioningBlock, ContinuableBlock /** * @param Context $Context + * @param State $State * @param Block|null $Block - * @param State|null $State * @return static|null */ public static function build( Context $Context, - Block $Block = null, - State $State = null + State $State, + Block $Block = null ) { if (! isset($Block) || ! $Block instanceof Paragraph) { return null; @@ -95,9 +95,10 @@ final class Table implements AcquisitioningBlock, ContinuableBlock /** * @param Context $Context + * @param State $State * @return self|null */ - public function advance(Context $Context) + public function advance(Context $Context, State $State) { if ($Context->previousEmptyLines() > 0) { return null; diff --git a/src/Components/ContinuableBlock.php b/src/Components/ContinuableBlock.php index db60d74..fbfc4c6 100644 --- a/src/Components/ContinuableBlock.php +++ b/src/Components/ContinuableBlock.php @@ -3,12 +3,14 @@ namespace Erusev\Parsedown\Components; use Erusev\Parsedown\Parsing\Context; +use Erusev\Parsedown\State; interface ContinuableBlock extends Block { /** * @param Context $Context + * @param State $State * @return static|null */ - public function advance(Context $Context); + public function advance(Context $Context, State $State); } diff --git a/src/Parsedown.php b/src/Parsedown.php index 990543f..af7bae4 100644 --- a/src/Parsedown.php +++ b/src/Parsedown.php @@ -90,7 +90,7 @@ final class Parsedown && $CurrentBlock instanceof ContinuableBlock && ! $CurrentBlock instanceof Paragraph ) { - $Block = $CurrentBlock->advance($Context); + $Block = $CurrentBlock->advance($Context, $State); if (isset($Block)) { $CurrentBlock = $Block; @@ -107,7 +107,7 @@ final class Parsedown ); foreach ($potentialBlockTypes as $blockType) { - $Block = $blockType::build($Context, $CurrentBlock, $State); + $Block = $blockType::build($Context, $State, $CurrentBlock); if (isset($Block)) { if ($Block instanceof StateUpdatingBlock) { @@ -130,7 +130,7 @@ final class Parsedown } if (isset($CurrentBlock) && $CurrentBlock instanceof Paragraph) { - $Block = $CurrentBlock->advance($Context); + $Block = $CurrentBlock->advance($Context, $State); } if (isset($Block)) { @@ -140,7 +140,7 @@ final class Parsedown $Blocks[] = $CurrentBlock; } - $CurrentBlock = Paragraph::build($Context); + $CurrentBlock = Paragraph::build($Context, $State); } }