/** * @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); }
/** * @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; }
/** * @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); }