Completed
Push — master ( 00aa22...6005e9 )
by Richard
07:10
created

Json::run()   A

Complexity

Conditions 4
Paths 5

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 15
rs 9.2
cc 4
eloc 9
nc 5
nop 2
1
<?php
2
namespace Transphporm\TSSFunction;
3
class Json implements \Transphporm\TSSFunction {
4
    private $baseDir;
5
6
    public function __construct(&$baseDir) {
7
        $this->baseDir = &$baseDir;
8
    }
9
10
    public function run(array $args, \DomElement $element = null) {
11
        $json = $args[0];
12
13
        if ($this->isJsonFile($json)) {
14
            $path = $this->baseDir . $json;
15
            if (!file_exists($path)) throw new \Exception('File does not exist at: ' . $path);
16
            $json = file_get_contents($path);
17
        }
18
19
        $map = json_decode($json, true);
20
21
        if (!is_array($map)) throw new \Exception('Could not decode json: ' . json_last_error_msg());
22
23
        return $map;
24
    }
25
26
    private function isJsonFile($json) {
27
        return trim($json)[0] != '{' && trim($json)[0] != '[';
28
    }
29
}
30