예제 #1
0
 /**
  * @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);
 }
예제 #2
0
 /**
  * @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);
 }
 /**
  * @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
 /**
  * @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);
 }