Passed
Push — master ( 0f9932...7bc3f9 )
by Brent
03:42
created

ImageParser::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace brendt\stitcher\parser;
4
5
use brendt\image\ResponsiveFactory;
6
use brendt\stitcher\Config;
7
8
class ImageParser extends AbstractParser {
9
10
    /**
11
     * @var ResponsiveFactory
12
     */
13
    protected $factory;
14
15
    /**
16
     * AbstractParser constructor.
17
     */
18
    public function __construct() {
19
        parent::__construct();
20
21
        $this->factory = Config::getDependency('factory.image');
22
    }
23
24
    /**
25
     * @param $entry
26
     *
27
     * @return array|mixed
28
     */
29
    public function parse($entry) {
30
        $data = [];
31
        $defaults = [];
32
        $path = null;
33
34
        if (is_array($entry)) {
35
            if (array_key_exists('src', $entry)) {
36
                $path = $entry['src'];
37
                unset($entry['src']);
38
            }
39
40
            foreach ($entry as $field => $value) {
41
                $defaults[$field] = $value;
42
            }
43
        } else {
44
            $path = $entry;
45
        }
46
47
        if (!$path) {
48
            return $data;
49
        }
50
51
        $image = $this->factory->create($path);
52
53
        $data = [
54
            'src' => $image->src(),
55
            'srcset' => $image->srcset(),
56
            'sizes' => $image->sizes(),
57
        ] + $defaults;
58
59
        return $data;
60
    }
61
62
}
63