|
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