Csv::toString()   A
last analyzed

Complexity

Conditions 5
Paths 8

Size

Total Lines 29

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
nc 8
nop 2
dl 0
loc 29
rs 9.1448
c 0
b 0
f 0
1
<?php
2
3
namespace Gettext\Generators;
4
5
use Gettext\Translations;
6
use Gettext\Utils\HeadersGeneratorTrait;
7
use Gettext\Utils\CsvTrait;
8
9
/**
10
 * Class to export translations to csv.
11
 */
12
class Csv extends Generator implements GeneratorInterface
13
{
14
    use HeadersGeneratorTrait;
15
    use CsvTrait;
16
17
    public static $options = [
18
        'includeHeaders' => false,
19
        'delimiter' => ",",
20
        'enclosure' => '"',
21
        'escape_char' => "\\"
22
    ];
23
24
    /**
25
     * {@parentDoc}.
26
     */
27
    public static function toString(Translations $translations, array $options = [])
28
    {
29
        $options += static::$options;
30
        $handle = fopen('php://memory', 'w');
31
32
        if ($options['includeHeaders']) {
33
            static::fputcsv($handle, ['', '', static::generateHeaders($translations)], $options);
34
        }
35
36
        foreach ($translations as $translation) {
37
            if ($translation->isDisabled()) {
38
                continue;
39
            }
40
41
            $line = [$translation->getContext(), $translation->getOriginal(), $translation->getTranslation()];
42
43
            if ($translation->hasPluralTranslations(true)) {
44
                $line = array_merge($line, $translation->getPluralTranslations());
45
            }
46
47
            static::fputcsv($handle, $line, $options);
48
        }
49
50
        rewind($handle);
51
        $csv = stream_get_contents($handle);
52
        fclose($handle);
53
54
        return $csv;
55
    }
56
}
57