@@ -22,6 +22,8 @@ class DataTransformer
2222 protected $ patternDataStore ;
2323 protected $ renderer ;
2424 protected $ hasRun ;
25+ protected $ currentPattern ;
26+ protected $ renderError ;
2527
2628 public function __construct ($ verbose = false )
2729 {
@@ -42,11 +44,12 @@ public function run(Renderer $renderer)
4244 Data::replaceStore ($ dataStore );
4345 // Process pattern specific data.
4446 foreach (array_keys ($ this ->patternDataStore ) as $ pattern ) {
47+ $ this ->currentPattern = $ pattern ;
4548 $ this ->processPattern ($ pattern );
4649 }
4750 $ this ->hasRun = true ;
4851 if ($ this ->verbose ) {
49- Console::writeInfo ('data transform plugin processing done... ' );
52+ Console::writeInfo ('[ data transform plugin] processing done... ' );
5053 }
5154 }
5255
@@ -161,19 +164,33 @@ public function getProcessedPatternSpecificData($pattern, $extraData = array())
161164 return Data::getPatternSpecificData ($ pattern , $ extraData );
162165 }
163166
167+ public function renderErrorHandler ($ errno , $ errstr ) {
168+ $ this ->renderError = $ errstr ;
169+
170+ return TRUE ;
171+ }
172+
164173 protected function renderPattern ($ pattern , $ data )
165174 {
166175 if (isset ($ this ->patternDataStore [$ pattern ]['patternRaw ' ])) {
167176 foreach (array_keys ($ data ) as $ key ) {
168177 $ data = $ this ->cloneObjects ($ data , $ key );
169178 }
170- $ pattern = $ this ->renderer ->render (
179+ $ this ->renderError = NULL ;
180+ set_error_handler (array ($ this , 'renderErrorHandler ' ));
181+ $ rendered = $ this ->renderer ->render (
171182 $ this ->patternDataStore [$ pattern ]['patternRaw ' ],
172183 $ data
173184 );
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+ }
174191 }
175192
176- return $ pattern ;
193+ return $ rendered ;
177194 }
178195
179196 protected function cloneObjects ($ data , $ key )
0 commit comments