Reduce duplications and fix some docblocks

This commit is contained in:
Ivan Lanin 2014-06-05 23:47:39 +07:00
parent 479713da55
commit d97602fa98
13 changed files with 75 additions and 68 deletions

View File

@ -188,6 +188,7 @@ abstract class AbstractContainer extends AbstractElement
/**
* Set relation Id
*
* @param \PhpOffice\PhpWord\Element\AbstractElement $element
* @param string $elementName
* @param string $source
*/

View File

@ -66,6 +66,7 @@ class Table extends AbstractElement
/**
* Write column
*
* @param \PhpOffice\PhpWord\Element\Row $row
* @return string
*/
private function writeRowDef(RowElement $row)
@ -89,6 +90,7 @@ class Table extends AbstractElement
/**
* Write row
*
* @param \PhpOffice\PhpWord\Element\Row $row
* @return string
*/
private function writeRow(RowElement $row)
@ -106,6 +108,7 @@ class Table extends AbstractElement
/**
* Write cell
*
* @param \PhpOffice\PhpWord\Element\Cell $cell
* @return string
*/
private function writeCell(CellElement $cell)

View File

@ -18,6 +18,7 @@
namespace PhpOffice\PhpWord\Writer\Word2007\Element;
use PhpOffice\PhpWord\Element\AbstractElement as Element;
use PhpOffice\PhpWord\Element\PageBreak as PageBreakElement;
use PhpOffice\PhpWord\Shared\String;
use PhpOffice\PhpWord\Shared\XMLWriter;
@ -116,7 +117,28 @@ abstract class AbstractElement
}
/**
* Write ending
* Start w:p DOM element
*
* @uses \PhpOffice\PhpWord\Writer\Word2007\Element\PageBreak::write()
*/
protected function startElementP()
{
if (!$this->withoutP) {
$this->xmlWriter->startElement('w:p');
// Paragraph style
if (method_exists($this->element, 'getParagraphStyle')) {
$this->writeParagraphStyle();
}
// PageBreak
if ($this->pageBreakBefore) {
$elementWriter = new PageBreak($this->xmlWriter, new PageBreakElement());
$elementWriter->write();
}
}
}
/**
* End w:p DOM element
*/
protected function endElementP()
{
@ -125,6 +147,43 @@ abstract class AbstractElement
}
}
/**
* Write ending
*/
protected function writeParagraphStyle()
{
$this->writeTextStyle('Paragraph');
}
/**
* Write ending
*/
protected function writeFontStyle()
{
$this->writeTextStyle('Font');
}
/**
* Write text style
*
* @param string $styleType Font|Paragraph
*/
private function writeTextStyle($styleType)
{
$method = "get{$styleType}Style";
$class = "PhpOffice\\PhpWord\\Writer\\Word2007\\Style\\{$styleType}";
$styleObject = $this->element->$method();
$styleWriter = new $class($this->xmlWriter, $styleObject);
if (method_exists($styleWriter, 'setIsInline')) {
$styleWriter->setIsInline(true);
}
/** @var \PhpOffice\PhpWord\Writer\Word2007\Style\AbstractStyle $styleWriter */
$styleWriter->write();
}
/**
* Convert text to valid format
*

View File

@ -35,7 +35,7 @@ class CheckBox extends Text
return;
}
$this->writeOpeningWP();
$this->startElementP();
$xmlWriter->startElement('w:r');
$xmlWriter->startElement('w:fldChar');

View File

@ -67,7 +67,8 @@ class Field extends Text
}
}
$this->writeOpeningWP();
$this->startElementP();
$xmlWriter->startElement('w:fldSimple');
$xmlWriter->writeAttribute('w:instr', $instruction);
$xmlWriter->startElement('w:r');

View File

@ -42,7 +42,7 @@ class Footnote extends Text
return;
}
$this->writeOpeningWP();
$this->startElementP();
$xmlWriter->startElement('w:r');
$xmlWriter->startElement('w:rPr');

View File

@ -37,7 +37,7 @@ class Link extends Text
$rId = $element->getRelationId() + ($element->isInSection() ? 6 : 0);
$this->writeOpeningWP();
$this->startElementP();
$xmlWriter->startElement('w:hyperlink');
$xmlWriter->writeAttribute('r:id', 'rId' . $rId);

View File

@ -30,7 +30,7 @@ class PageBreak extends AbstractElement
/**
* Write element
*
* @usedby \PhpOffice\PhpWord\Writer\Word2007\Element\Text::writeOpeningWP()
* @usedby \PhpOffice\PhpWord\Writer\Word2007\Element\AbstractElement::startElementP()
*/
public function write()
{

View File

@ -40,7 +40,7 @@ class PreserveText extends Text
$texts = array($texts);
}
$this->writeOpeningWP();
$this->startElementP();
foreach ($texts as $text) {
if (substr($text, 0, 1) == '{') {

View File

@ -17,10 +17,6 @@
namespace PhpOffice\PhpWord\Writer\Word2007\Element;
use PhpOffice\PhpWord\Element\PageBreak as PageBreakElement;
use PhpOffice\PhpWord\Writer\Word2007\Style\Font as FontStyleWriter;
use PhpOffice\PhpWord\Writer\Word2007\Style\Paragraph as ParagraphStyleWriter;
/**
* Text element writer
*
@ -39,7 +35,7 @@ class Text extends AbstractElement
return;
}
$this->writeOpeningWP();
$this->startElementP();
$xmlWriter->startElement('w:r');
@ -53,58 +49,4 @@ class Text extends AbstractElement
$this->endElementP(); // w:p
}
/**
* Write opening
*
* @uses \PhpOffice\PhpWord\Writer\Word2007\Element\PageBreak::write()
*/
protected function writeOpeningWP()
{
$xmlWriter = $this->getXmlWriter();
$element = $this->getElement();
if (!$this->withoutP) {
$xmlWriter->startElement('w:p');
// Paragraph style
if (method_exists($element, 'getParagraphStyle')) {
$this->writeParagraphStyle();
}
// PageBreak
if ($this->hasPageBreakBefore()) {
$elementWriter = new PageBreak($xmlWriter, new PageBreakElement());
$elementWriter->write();
}
}
}
/**
* Write ending
*/
protected function writeParagraphStyle()
{
$xmlWriter = $this->getXmlWriter();
/** @var \PhpOffice\PhpWord\Element\Text $element Type hint */
$element = $this->getElement();
$paragraphStyle = $element->getParagraphStyle();
$styleWriter = new ParagraphStyleWriter($xmlWriter, $paragraphStyle);
$styleWriter->setIsInline(true);
$styleWriter->write();
}
/**
* Write ending
*/
protected function writeFontStyle()
{
$xmlWriter = $this->getXmlWriter();
/** @var \PhpOffice\PhpWord\Element\Text $element Type hint */
$element = $this->getElement();
$fontStyle = $element->getFontStyle();
$styleWriter = new FontStyleWriter($xmlWriter, $fontStyle);
$styleWriter->setIsInline(true);
$styleWriter->write();
}
}

View File

@ -37,7 +37,7 @@ class TextBreak extends Text
if (!$this->withoutP) {
$hasStyle = $element->hasStyle();
$this->writeOpeningWP();
$this->startElementP();
if ($hasStyle) {
$xmlWriter->startElement('w:pPr');

View File

@ -32,7 +32,7 @@ class TextRun extends Text
$xmlWriter = $this->getXmlWriter();
$element = $this->getElement();
$this->writeOpeningWP();
$this->startElementP();
$containerWriter = new Container($xmlWriter, $element);
$containerWriter->write();

View File

@ -134,6 +134,7 @@ class Frame extends AbstractStyle
/**
* Get style values in associative array
*
* @param \PhpOffice\PhpWord\Style\Frame $style
* @param array $properties
* @param string $suffix
* @return array