Completed
Push — master ( b68650...58f9ca )
by Stefan
02:39
created

DefaultRowBuilder::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
/**
3
 * @author neun
4
 * @since  2016-07-11
5
 */
6
7
namespace OneSheet;
8
9
/**
10
 * Class RowBuilder to generate XML row strings.
11
 *
12
 * @package OneSheet
13
 */
14
class DefaultRowBuilder implements RowBuilderInterface
15
{
16
    /**
17
     * XML constant for row strings.
18
     */
19
    const ROW_XML = '<row r="%d" spans="1:%d">%s</row>';
20
21
    /**
22
     * @var CellBuilderInterface
23
     */
24
    private $cellBuilder;
25
26
    /**
27
     * Counter for the current row index,
28
     * increases by 1 for every added row.
29
     *
30
     * @var int
31
     */
32
    private $rowNumber = 1;
33
34
    /**
35
     * RowBuilder constructor.
36
     * @param CellBuilderInterface $cellBuilder
37
     */
38 4
    public function __construct(CellBuilderInterface $cellBuilder)
39
    {
40 4
        $this->cellBuilder = $cellBuilder;
41 4
    }
42
43
    /**
44
     * Build XML string for a single data row and return it.
45
     *
46
     * @param array $dataRow
47
     * @param int   $styleId
48
     * @return string
49
     */
50 2
    public function build(array $dataRow, $styleId = 0)
51
    {
52 2
        $cellXml = '';
53 2
        foreach (array_values($dataRow) as $cellNumber => $cellValue) {
54 2
            $cellXml .= $this->cellBuilder->build($this->rowNumber, $cellNumber, $cellValue, $styleId);
55 2
        }
56
57 2
        return sprintf(self::ROW_XML, $this->rowNumber++, count($dataRow), $cellXml);
58
    }
59
}
60