Completed
Pull Request — master (#6)
by Greg
04:05 queued 01:58
created

CsvFormatter::csvEscape()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 9
rs 9.6666
cc 1
eloc 7
nc 1
nop 2
1
<?php
2
namespace Consolidation\OutputFormatters\Formatters;
3
4
use Consolidation\OutputFormatters\FormatterInterface;
5
use Symfony\Component\Console\Output\OutputInterface;
6
7
class CsvFormatter implements FormatterInterface
8
{
9
    /**
10
     * @inheritdoc
11
     */
12
    public function write($data, $options, OutputInterface $output)
13
    {
14
        if (empty($data) || !is_array($data)) {
15
            return;
16
        }
17
        if (!is_array($data[0])) {
18
            $this->writeCsvLine($data, $options, $output);
19
            return;
20
        }
21
        $this->writeCsvLines($data, $options, $output);
22
    }
23
24
    public function writeCsvLines($data, $options, OutputInterface $output)
25
    {
26
        foreach ($data as $line) {
27
            $this->writeCsvLine($line, $options, $output);
28
        }
29
    }
30
31
    public function writeCsvLine($data, $options, OutputInterface $output)
0 ignored issues
show
Unused Code introduced by
The parameter $options is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
32
    {
33
        $output->write($this->csvEscape($data));
34
    }
35
36
    protected function csvEscape($data, $delimiter = ',')
37
    {
38
        $buffer = fopen('php://temp', 'r+');
39
        fputcsv($buffer, $data, $delimiter);
40
        rewind($buffer);
41
        $csv = fgets($buffer);
42
        fclose($buffer);
43
        return $csv;
44
    }
45
}
46