@@ -22,6 +22,8 @@ class DataTransformer
22
22
protected $ patternDataStore ;
23
23
protected $ renderer ;
24
24
protected $ hasRun ;
25
+ protected $ currentPattern ;
26
+ protected $ renderError ;
25
27
26
28
public function __construct ($ verbose = false )
27
29
{
@@ -42,11 +44,12 @@ public function run(Renderer $renderer)
42
44
Data::replaceStore ($ dataStore );
43
45
// Process pattern specific data.
44
46
foreach (array_keys ($ this ->patternDataStore ) as $ pattern ) {
47
+ $ this ->currentPattern = $ pattern ;
45
48
$ this ->processPattern ($ pattern );
46
49
}
47
50
$ this ->hasRun = true ;
48
51
if ($ this ->verbose ) {
49
- Console::writeInfo ('data transform plugin processing done... ' );
52
+ Console::writeInfo ('[ data transform plugin] processing done... ' );
50
53
}
51
54
}
52
55
@@ -161,19 +164,33 @@ public function getProcessedPatternSpecificData($pattern, $extraData = array())
161
164
return Data::getPatternSpecificData ($ pattern , $ extraData );
162
165
}
163
166
167
+ public function renderErrorHandler ($ errno , $ errstr ) {
168
+ $ this ->renderError = $ errstr ;
169
+
170
+ return TRUE ;
171
+ }
172
+
164
173
protected function renderPattern ($ pattern , $ data )
165
174
{
166
175
if (isset ($ this ->patternDataStore [$ pattern ]['patternRaw ' ])) {
167
176
foreach (array_keys ($ data ) as $ key ) {
168
177
$ data = $ this ->cloneObjects ($ data , $ key );
169
178
}
170
- $ pattern = $ this ->renderer ->render (
179
+ $ this ->renderError = NULL ;
180
+ set_error_handler (array ($ this , 'renderErrorHandler ' ));
181
+ $ rendered = $ this ->renderer ->render (
171
182
$ this ->patternDataStore [$ pattern ]['patternRaw ' ],
172
183
$ data
173
184
);
185
+ restore_error_handler ();
186
+ if (isset ($ this ->renderError )) {
187
+ Console::writeWarning ('[data transform plugin] pattern ' . $ this ->currentPattern );
188
+ Console::writeWarning ('error rendering ' . $ pattern , true );
189
+ Console::writeWarning ($ this ->renderError , true );
190
+ }
174
191
}
175
192
176
- return $ pattern ;
193
+ return $ rendered ;
177
194
}
178
195
179
196
protected function cloneObjects ($ data , $ key )
0 commit comments