Logging\ErrorMsg fix for jump target list return array
This commit is contained in:
@@ -17,8 +17,8 @@ class ErrorMessage
|
||||
{
|
||||
/** @var array<int,array{id:string,level:string,str:string,target:string,target_style:string,highlight:string[]}> */
|
||||
private array $error_str = [];
|
||||
/** @var array<string,string> */
|
||||
private array $jump_targets;
|
||||
/** @var array<string,array{info:string,level:string}> */
|
||||
private array $jump_targets = [];
|
||||
/** @var \CoreLibs\Logging\Logging $log */
|
||||
public \CoreLibs\Logging\Logging $log;
|
||||
|
||||
@@ -112,7 +112,7 @@ class ErrorMessage
|
||||
'highlight' => $highlight,
|
||||
];
|
||||
// set a jump target
|
||||
$this->setJumpTarget($jump_target['target'] ?? null, $jump_target['info'] ?? null);
|
||||
$this->setJumpTarget($jump_target['target'] ?? null, $jump_target['info'] ?? null, $level);
|
||||
// write to log for abort/crash
|
||||
switch ($level) {
|
||||
case 'notice':
|
||||
@@ -202,15 +202,18 @@ class ErrorMessage
|
||||
*
|
||||
* @param string|null $target
|
||||
* @param string|null $info
|
||||
* @param string $level [='error']
|
||||
* @return void
|
||||
*/
|
||||
public function setJumpTarget(
|
||||
?string $target,
|
||||
?string $info,
|
||||
string $level = 'error',
|
||||
): void {
|
||||
if (
|
||||
empty($target) ||
|
||||
!empty($this->jump_targets[$target])
|
||||
array_key_exists($target, $this->jump_targets)
|
||||
// !empty($this->jump_targets[$target])
|
||||
// also check if this is an alphanumeric string? css id compatible?
|
||||
) {
|
||||
return;
|
||||
@@ -218,7 +221,11 @@ class ErrorMessage
|
||||
if (empty($info)) {
|
||||
$info = 'Jump to: ' . $target;
|
||||
}
|
||||
$this->jump_targets[$target] = $info;
|
||||
$level = MessageLevel::fromName($level)->name;
|
||||
$this->jump_targets[$target] = [
|
||||
'info' => $info,
|
||||
'level' => $level,
|
||||
];
|
||||
}
|
||||
|
||||
// *********************************************************************
|
||||
@@ -266,11 +273,21 @@ class ErrorMessage
|
||||
/**
|
||||
* Return the jump target list
|
||||
*
|
||||
* @return array{}|array{string,string} List of jump targets with info text, or empty array if not set
|
||||
* @return array{}|array<int,array{target:string,info:string,level:string}> List of jump targets with info text,
|
||||
* or empty array if not set
|
||||
*/
|
||||
public function getJumpTarget(): array
|
||||
{
|
||||
return $this->jump_targets ?? [];
|
||||
$_jump_target = [];
|
||||
foreach ($this->jump_targets as $target => $jump) {
|
||||
$_jump_target[] = array_merge(
|
||||
$jump,
|
||||
[
|
||||
'target' => $target,
|
||||
]
|
||||
);
|
||||
}
|
||||
return $_jump_target;
|
||||
}
|
||||
|
||||
// *********************************************************************
|
||||
|
||||
@@ -444,7 +444,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase
|
||||
);
|
||||
$this->assertEquals(
|
||||
[
|
||||
'target-f' => 'Target text'
|
||||
['target' => 'target-f', 'info' => 'Target text', 'level' => 'error']
|
||||
],
|
||||
$em->getJumpTarget()
|
||||
);
|
||||
@@ -455,7 +455,7 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase
|
||||
);
|
||||
$this->assertEquals(
|
||||
[
|
||||
'target-f' => 'Target text'
|
||||
['target' => 'target-f', 'info' => 'Target text', 'level' => 'error']
|
||||
],
|
||||
$em->getJumpTarget()
|
||||
);
|
||||
@@ -466,8 +466,8 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase
|
||||
);
|
||||
$this->assertEquals(
|
||||
[
|
||||
'target-f' => 'Target text',
|
||||
'target-s' => 'More text'
|
||||
['target' => 'target-f', 'info' => 'Target text', 'level' => 'error'],
|
||||
['target' => 'target-s', 'info' => 'More text', 'level' => 'error'],
|
||||
],
|
||||
$em->getJumpTarget()
|
||||
);
|
||||
@@ -478,9 +478,23 @@ final class CoreLibsLoggingErrorMessagesTest extends TestCase
|
||||
);
|
||||
$this->assertEquals(
|
||||
[
|
||||
'target-f' => 'Target text',
|
||||
'target-s' => 'More text',
|
||||
'target-e' => 'Jump to: target-e'
|
||||
['target' => 'target-f', 'info' => 'Target text', 'level' => 'error'],
|
||||
['target' => 'target-s', 'info' => 'More text', 'level' => 'error'],
|
||||
['target' => 'target-e', 'info' => 'Jump to: target-e', 'level' => 'error'],
|
||||
],
|
||||
$em->getJumpTarget()
|
||||
);
|
||||
// add through message
|
||||
$em->setErrorMsg('E-101', 'abort', 'Abort message', jump_target:[
|
||||
'target' => 'abort-target',
|
||||
'info' => 'Abort error'
|
||||
]);
|
||||
$this->assertEquals(
|
||||
[
|
||||
['target' => 'target-f', 'info' => 'Target text', 'level' => 'error'],
|
||||
['target' => 'target-s', 'info' => 'More text', 'level' => 'error'],
|
||||
['target' => 'target-e', 'info' => 'Jump to: target-e', 'level' => 'error'],
|
||||
['target' => 'abort-target', 'info' => 'Abort error', 'level' => 'abort'],
|
||||
],
|
||||
$em->getJumpTarget()
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user