Completed
Push — master ( 0094f8...789c14 )
by Oscar
9s
created

CsvDictionary::fromString()   B

Complexity

Conditions 5
Paths 8

Size

Total Lines 26
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 26
rs 8.439
cc 5
eloc 14
nc 8
nop 3
1
<?php
2
3
namespace Gettext\Extractors;
4
5
use Gettext\Translations;
6
7
/**
8
 * Class to get gettext strings from plain json.
9
 */
10
class CsvDictionary extends Extractor implements ExtractorInterface
11
{
12
    /**
13
     * {@inheritdoc}
14
     */
15
    public static function fromString($string, Translations $translations = null, $file = '')
16
    {
17
        if ($translations === null) {
18
            $translations = new Translations();
19
        }
20
21
        $handle = fopen('php://memory', 'w');
22
23
        fputs($handle, $string);
24
        rewind($handle);
25
26
        $entries = array();
27
        while ($row = fgetcsv($handle)) {
28
            $entries[$row[0]] = $row[1];
29
        }
30
31
        fclose($handle);
32
33
        if ($entries) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $entries of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
34
            foreach ($entries as $original => $translation) {
35
                $translations->insert(null, $original)->setTranslation($translation);
36
            }
37
        }
38
39
        return $translations;
40
    }
41
}
42