Server : Apache System : Linux host44.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64 User : vapecompany ( 2719) PHP Version : 7.4.33 Disable Function : NONE Directory : /home/vapecompany/demo.vapecompany.com.bd/vendor/league/commonmark/src/ |
Upload File : |
<?php /* * This file is part of the league/commonmark package. * * (c) Colin O'Dell <colinodell@gmail.com> * * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark; use League\CommonMark\Block\Element\AbstractBlock; use League\CommonMark\Block\Element\Document; use League\CommonMark\Reference\ReferenceParser; /** * Maintains the current state of the Markdown parser engine */ class Context implements ContextInterface { /** * @var EnvironmentInterface */ protected $environment; /** * @var Document */ protected $doc; /** * @var AbstractBlock|null */ protected $tip; /** * @var AbstractBlock */ protected $container; /** * @var int */ protected $lineNumber; /** * @var string */ protected $line; /** * @var UnmatchedBlockCloser */ protected $blockCloser; /** * @var bool */ protected $blocksParsed = false; /** * @var ReferenceParser */ protected $referenceParser; public function __construct(Document $document, EnvironmentInterface $environment) { $this->doc = $document; $this->tip = $this->doc; $this->container = $this->doc; $this->environment = $environment; $this->referenceParser = new ReferenceParser($document->getReferenceMap()); $this->blockCloser = new UnmatchedBlockCloser($this); } /** * @param string $line * * @return void */ public function setNextLine(string $line) { ++$this->lineNumber; $this->line = $line; } public function getDocument(): Document { return $this->doc; } public function getTip(): ?AbstractBlock { return $this->tip; } /** * @param AbstractBlock|null $block * * @return $this */ public function setTip(?AbstractBlock $block) { $this->tip = $block; return $this; } public function getLineNumber(): int { return $this->lineNumber; } public function getLine(): string { return $this->line; } public function getBlockCloser(): UnmatchedBlockCloser { return $this->blockCloser; } public function getContainer(): AbstractBlock { return $this->container; } /** * @param AbstractBlock $container * * @return $this */ public function setContainer(AbstractBlock $container) { $this->container = $container; return $this; } public function addBlock(AbstractBlock $block) { $this->blockCloser->closeUnmatchedBlocks(); $block->setStartLine($this->lineNumber); while ($this->tip !== null && !$this->tip->canContain($block)) { $this->tip->finalize($this, $this->lineNumber); } // This should always be true if ($this->tip !== null) { $this->tip->appendChild($block); } $this->tip = $block; $this->container = $block; } public function replaceContainerBlock(AbstractBlock $replacement) { $this->blockCloser->closeUnmatchedBlocks(); $replacement->setStartLine($this->container->getStartLine()); $this->container->replaceWith($replacement); if ($this->tip === $this->container) { $this->tip = $replacement; } $this->container = $replacement; } public function getBlocksParsed(): bool { return $this->blocksParsed; } /** * @param bool $bool * * @return $this */ public function setBlocksParsed(bool $bool) { $this->blocksParsed = $bool; return $this; } public function getReferenceParser(): ReferenceParser { return $this->referenceParser; } }