|
7 | 7 | use PatternLab\Data; |
8 | 8 | use PatternLab\PatternData; |
9 | 9 |
|
| 10 | +class PatternNotFoundException extends \Exception {} |
| 11 | + |
10 | 12 | class DataTransformer |
11 | 13 | { |
12 | 14 | protected static $processed = array(); |
@@ -59,20 +61,26 @@ protected function processPattern($pattern) |
59 | 61 | return; |
60 | 62 | } |
61 | 63 | $this->setProcessed($pattern); |
62 | | - $patternSpecificData = |
63 | | - $this->processData(Data::getPatternSpecificData($pattern)) |
64 | | - ; |
65 | | - $dataStore = Data::get(); |
66 | | - foreach (array_keys($patternSpecificData) as $key) { |
67 | | - if (!isset($dataStore['patternSpecific'][$pattern]['data'][$key])) { |
| 64 | + try { |
| 65 | + $patternSpecificData = |
| 66 | + $this->processData(Data::getPatternSpecificData($pattern)); |
| 67 | + |
| 68 | + |
| 69 | + $dataStore = Data::get(); |
| 70 | + foreach (array_keys($patternSpecificData) as $key) { |
| 71 | + if (!isset($dataStore['patternSpecific'][$pattern]['data'][$key])) { |
68 | 72 | // Value is default global data. |
69 | 73 | if (is_object($dataStore[$key])) { |
70 | | - $patternSpecificData[$key] = clone $dataStore[$key]; |
| 74 | + $patternSpecificData[$key] = clone $dataStore[$key]; |
71 | 75 | } |
| 76 | + } |
72 | 77 | } |
| 78 | + Data::initPattern($pattern); |
| 79 | + Data::setPatternData($pattern, $patternSpecificData); |
| 80 | + } |
| 81 | + catch (PatternNotFoundException $exception) { |
| 82 | + throw new PatternNotFoundException("Pattern '$pattern': " . $exception->getMessage()); |
73 | 83 | } |
74 | | - Data::initPattern($pattern); |
75 | | - Data::setPatternData($pattern, $patternSpecificData); |
76 | 84 | } |
77 | 85 |
|
78 | 86 | protected function processData($data) |
@@ -119,6 +127,9 @@ protected function processKey($data, $key) |
119 | 127 | } |
120 | 128 | $data[$key] = $this->renderPattern($pattern, $patternData); |
121 | 129 | } |
| 130 | + else { |
| 131 | + throw new PatternNotFoundException("Could not find pattern '$pattern' to include!"); |
| 132 | + } |
122 | 133 | } |
123 | 134 | elseif (isset($value['join()']) && is_array($value['join()'])) { |
124 | 135 | $data[$key] = join($value['join()']); |
|
0 commit comments