Skip to content

Commit 6c41df7

Browse files
committed
Throw an exception if the user tries to include an non-existing pattern
1 parent 89b69e9 commit 6c41df7

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

src/aleksip/DataTransformPlugin/DataTransformer.php

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
use PatternLab\Data;
88
use PatternLab\PatternData;
99

10+
class PatternNotFoundException extends \Exception {}
11+
1012
class DataTransformer
1113
{
1214
protected static $processed = array();
@@ -59,20 +61,26 @@ protected function processPattern($pattern)
5961
return;
6062
}
6163
$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])) {
6872
// Value is default global data.
6973
if (is_object($dataStore[$key])) {
70-
$patternSpecificData[$key] = clone $dataStore[$key];
74+
$patternSpecificData[$key] = clone $dataStore[$key];
7175
}
76+
}
7277
}
78+
Data::initPattern($pattern);
79+
Data::setPatternData($pattern, $patternSpecificData);
80+
}
81+
catch (PatternNotFoundException $exception) {
82+
throw new PatternNotFoundException("Pattern '$pattern': " . $exception->getMessage());
7383
}
74-
Data::initPattern($pattern);
75-
Data::setPatternData($pattern, $patternSpecificData);
7684
}
7785

7886
protected function processData($data)
@@ -119,6 +127,9 @@ protected function processKey($data, $key)
119127
}
120128
$data[$key] = $this->renderPattern($pattern, $patternData);
121129
}
130+
else {
131+
throw new PatternNotFoundException("Could not find pattern '$pattern' to include!");
132+
}
122133
}
123134
elseif (isset($value['join()']) && is_array($value['join()'])) {
124135
$data[$key] = join($value['join()']);

0 commit comments

Comments
 (0)