コード例 #1
0
ファイル: BlockTable.php プロジェクト: kisphp/markdown-parser
 /**
  * @param DataObjectInterface $dataObject
  */
 public function changeLineType(DataObjectInterface $dataObject)
 {
     $max = $dataObject->count();
     $changeNextLine = true;
     $firstLineCompiled = false;
     $htmlTable = '';
     for ($i = $this->lineNumber; $i < $max; $i++) {
         $currentLine = $dataObject->getLine($i);
         $htmlTable .= $this->createTableRow($currentLine);
         if ($firstLineCompiled === false) {
             $firstLineCompiled = true;
             $previousLineIndex = $i - 1;
             $previousLine = $dataObject->getLine($previousLineIndex);
             if ($previousLine === null) {
                 continue;
             }
             $htmlTable = $this->createTableRow($previousLine, true) . $htmlTable;
             $this->createSkipLine($dataObject, $previousLineIndex);
             unset($previousLineIndex);
         }
         $this->createSkipLine($dataObject, $i);
         /** @var BlockInterface $nextLineObject */
         $nextLineObject = $dataObject->getLine($i + 1);
         if (!$this->isTableLineType($nextLineObject)) {
             $changeNextLine = false;
         }
         if ($changeNextLine === false) {
             break;
         }
     }
     $htmlTable = $this->parseInlineMarkup($htmlTable);
     $listContent = $this->factory->create(BlockTypes::BLOCK_UNCHANGE)->setContent($this->getStartTableTag() . $htmlTable . $this->getEndTableTag())->setLineNumber($this->lineNumber);
     $dataObject->updateLine($this->lineNumber, $listContent);
 }
コード例 #2
0
ファイル: BlockQuote.php プロジェクト: kisphp/markdown-parser
 /**
  * @param DataObjectInterface $dataObject
  * @param array $updatedLines
  */
 protected function parseSubBlock(DataObjectInterface $dataObject, array $updatedLines)
 {
     $newCodeParsed = $this->getSubBlockParsedContent($updatedLines);
     $this->setContent($newCodeParsed);
     $newContent = $this->factory->create(BlockTypes::BLOCK_UNCHANGE)->setContent($this->parse());
     $dataObject->updateLine($this->getLineNumber(), $newContent);
 }
コード例 #3
0
 /**
  * @param DataObjectInterface $dataObject
  *
  * @return BlockInterface
  */
 public function changeLineType(DataObjectInterface $dataObject)
 {
     $previousLine = $this->lineNumber - 1;
     $previousLineObject = $dataObject->getLine($previousLine);
     $previousLineNewObject = new static($this->factory);
     $previousLineNewObject->setContent($previousLineObject->getContent());
     $previousLineNewObject->setLineNumber($previousLineObject->getLineNumber());
     $dataObject->updateLine($previousLine, $previousLineNewObject);
     $changedBlockObject = $this->changeObjectType(BlockTypes::BLOCK_EMPTY);
     $dataObject->updateLine($this->getLineNumber(), $changedBlockObject);
     return $changedBlockObject;
 }
コード例 #4
0
ファイル: BlockCode.php プロジェクト: kisphp/markdown-parser
 /**
  * @param DataObjectInterface $dataObject
  */
 public function changeLineType(DataObjectInterface $dataObject)
 {
     $max = $dataObject->count();
     $isStart = false;
     $blockContent = [];
     $codeClass = '';
     for ($i = $this->lineNumber; $i < $max; $i++) {
         $lineObject = $dataObject->getLine($i);
         $lineContent = $lineObject->getContent();
         if (strpos($lineContent, static::BLOCK_MARKUP) === 0 && $isStart === false) {
             $isStart = true;
             $codeClass = $this->getCodeType($lineContent);
             $newObject = $this->factory->create(BlockTypes::BLOCK_SKIP)->setContent('')->setLineNumber($i);
             $dataObject->updateLine($i, $newObject);
             continue;
         }
         if (strpos($lineContent, static::BLOCK_MARKUP) === false) {
             $blockContent[] = $this->encodeContent($lineContent);
         }
         if ($i >= $max - 1 || strpos($lineContent, static::BLOCK_MARKUP) === 0 && $isStart === true) {
             $newObject = $this->factory->create(BlockTypes::BLOCK_SKIP)->setContent('')->setLineNumber($i);
             $dataObject->updateLine($i, $newObject);
             break;
         }
         $newObject = $this->factory->create(BlockTypes::BLOCK_SKIP)->setContent('')->setLineNumber($i);
         $dataObject->updateLine($i, $newObject);
     }
     $lineContent = $this->getStartTag($codeClass) . implode('', $blockContent) . $this->getEndTag();
     $currectLineObject = $this->factory->create(BlockTypes::BLOCK_UNCHANGE)->setContent($lineContent)->setLineNumber($this->lineNumber);
     $dataObject->updateLine($this->lineNumber, $currectLineObject);
 }
コード例 #5
0
ファイル: BlockList.php プロジェクト: kisphp/markdown-parser
 /**
  * @param DataObjectInterface $dataObject
  */
 public function changeLineType(DataObjectInterface $dataObject)
 {
     $max = $dataObject->count();
     $builder = $this->createBuilder();
     $lastItem = null;
     for ($i = $this->lineNumber; $i < $max; $i++) {
         $currentLineObject = $dataObject->getLine($i);
         if ($this->lineIsObjectOf($currentLineObject, BlockTypes::BLOCK_EMPTY, true)) {
             continue;
         }
         $changedContent = $this->factory->create(BlockTypes::BLOCK_SKIP);
         $dataObject->updateLine($i, $changedContent);
         /** @var BlockInterface $nextLineObject */
         $nextLineObject = $dataObject->getLine($i + 1);
         /* @var BlockInterface $nextLineObject */
         $secondLineObject = $dataObject->getLine($i + 2);
         if ($this->lineIsObjectOf($currentLineObject, BlockTypes::BLOCK_CONTINUE)) {
             $lastItem->appendContent($currentLineObject->getContent());
         } else {
             $lastItem = $builder->addItem($currentLineObject);
         }
         if (!$this->lineIsObjectOf($nextLineObject, static::class) && !$this->lineIsObjectOf($secondLineObject, static::class)) {
             break;
         }
     }
     unset($lastItem);
     $listHtmlContent = $this->parseInlineMarkup($builder->getTreeStructure()->parse());
     $listContent = $this->factory->create(BlockTypes::BLOCK_UNCHANGE)->setContent($listHtmlContent)->setLineNumber($this->lineNumber);
     $dataObject->updateLine($this->lineNumber, $listContent);
 }
コード例 #6
0
 /**
  * @param DataObjectInterface $dataObject
  */
 public function changeLineType(DataObjectInterface $dataObject)
 {
     $blockContent = [];
     $max = $dataObject->count();
     for ($i = $this->lineNumber; $i < $max; $i++) {
         $lineObject = $dataObject->getLine($i);
         $lineContent = $lineObject->getContent();
         $blockContent[] = $this->encodeContent($lineContent);
         $this->createSkipLine($dataObject, $i);
         /** @var BlockInterface $nextLineObject */
         $nextLineObject = $dataObject->getLine($i + 1);
         /* @var BlockInterface $nextLineObject */
         $secondLineObject = $dataObject->getLine($i + 2);
         if (!$this->lineIsObjectOf($nextLineObject, BlockTypes::BLOCK_SPACES_CODE) && !$this->lineIsObjectOf($secondLineObject, BlockTypes::BLOCK_SPACES_CODE)) {
             break;
         }
     }
     $lineContent = $this->getStartTag() . implode('', $blockContent) . $this->getEndTag();
     $currectLineObject = $this->factory->create(BlockTypes::BLOCK_UNCHANGE)->setContent($lineContent)->setLineNumber($this->lineNumber);
     $dataObject->updateLine($this->lineNumber, $currectLineObject);
 }
コード例 #7
0
 /**
  * @param DataObjectInterface $dataObject
  *
  * @return $this
  */
 public function changeLineType(DataObjectInterface $dataObject)
 {
     $nextLineNumber = $this->lineNumber + 1;
     if (!$dataObject->hasLine($nextLineNumber)) {
         return $this;
     }
     $max = $dataObject->count();
     $changeNextLine = true;
     $htmlCotent = [];
     for ($i = $this->lineNumber; $i < $max; $i++) {
         $currentLineObject = $dataObject->getLine($i);
         $htmlCotent[] = $currentLineObject->getContent();
         $nextLineObject = $dataObject->getLine($i + 1);
         if (!$this->lineIsObjectOf($nextLineObject, BlockTypes::BLOCK_PARAGRAPH)) {
             $changeNextLine = false;
         }
         $this->createSkipLine($dataObject, $i);
         if ($changeNextLine === false) {
             break;
         }
     }
     $newLineObject = $this->factory->create(BlockTypes::BLOCK_PARAGRAPH);
     $newLineObject->setContent(implode(' ', $htmlCotent))->setLineNumber($this->lineNumber);
     $dataObject->updateLine($this->lineNumber, $newLineObject);
     return $this;
 }
コード例 #8
0
 /**
  * @param DataObjectInterface $dataObject
  *
  * @throws \Exception
  */
 public function changeLineType(DataObjectInterface $dataObject)
 {
     $max = $dataObject->count();
     $delimiterFound = 0;
     $blockContent = [];
     for ($i = $this->lineNumber; $i < $max; $i++) {
         $currentLine = $dataObject->getLine($i);
         $lineContent = $currentLine->getContent();
         $this->createSkipLine($dataObject, $i);
         if ($this->isBlockDelimiterLine($lineContent)) {
             $this->setContentBlockKeyByContent($lineContent);
             $delimiterFound++;
             continue;
         }
         if ($delimiterFound > 1) {
             break;
         }
         $blockContent[] = $lineContent;
     }
     $content = $this->getSubBlockParsedContent($blockContent);
     $dataObject->saveAvailableBlock($this->contentBlockKey, $content);
 }