text = $text; $this->level = $level; } /** * @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 ($Context->line()->indent() > 3) { return null; } $State = $State ?: new State; $level = \strspn($Context->line()->text(), '#'); if ($level > 6 || $level < 1) { return null; } /** @var 1|2|3|4|5|6 $level */ $text = \ltrim($Context->line()->text(), '#'); $firstChar = \substr($text, 0, 1); if ( $State->get(StrictMode::class)->isEnabled() && \trim($firstChar, " \t") !== '' ) { return null; } $text = \trim($text, " \t"); # remove closing sequence $removedClosing = \rtrim($text, '#'); $lastChar = \substr($removedClosing, -1, 1); if (\trim($lastChar, " \t") === '') { $text = \rtrim($removedClosing, " \t"); } return new self($text, $level); } /** * @return Handler */ public function stateRenderable() { return new Handler( /** @return Element */ function (State $State) { return new Element( 'h' . \strval($this->level), [], $State->applyTo(Parsedown::line($this->text, $State)) ); } ); } }