Skip to content

Commit 7d2dafe

Browse files
committed
Improve error handling and messages
1 parent 7fc1139 commit 7d2dafe

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

src/aleksip/DataTransformPlugin/DataTransformer.php

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

src/aleksip/DataTransformPlugin/PatternLabListener.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function __construct()
2424
$this->addListener('patternData.codeHelperStart', 'dataTransformer');
2525
$this->addListener('twigPatternLoader.customize', 'addNodeVisitor', -99);
2626
if ($this->isVerbose()) {
27-
Console::writeLine('data transform plugin listeners added...');
27+
Console::writeLine('[data transform plugin] listeners added...');
2828
}
2929
}
3030

@@ -65,7 +65,7 @@ protected function isEnabled()
6565
$enabled = (is_null($enabled) || (bool)$enabled);
6666

6767
if ($this->isVerbose() && !$enabled) {
68-
Console::writeLine('data transform plugin is disabled...');
68+
Console::writeLine('[data transform plugin] plugin is disabled...');
6969
}
7070

7171
return $enabled;

0 commit comments

Comments
 (0)