Skip to content

Commit

Permalink
autokey
Browse files Browse the repository at this point in the history
  • Loading branch information
adrian-enspired committed Mar 20, 2024
1 parent 5d992b2 commit 96b0c42
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 24 deletions.
12 changes: 5 additions & 7 deletions src/ExceptableError.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,11 @@ enum ExceptableError : int implements Error {

/** @see MakesMessages::MESSAGES */
public const MESSAGES = [
self::class => [
self::UnknownError->name => "{__rootMessage__}",
self::UnacceptableError->name =>
"Invalid Error type ''{type}'' (expected enum implementing " . Error::class . ")",
self::UncaughtException->name => "Uncaught Exception ({__rootType__}): {__rootMessage__}",
self::HandlerFailed->name => "ExceptionHandler ({type}) failed: {__rootMessage__}"
]
self::UnknownError->name => "{__rootMessage__}",
self::UnacceptableError->name =>
"Invalid Error type ''{type}'' (expected enum implementing " . Error::class . ")",
self::UncaughtException->name => "Uncaught Exception ({__rootType__}): {__rootMessage__}",
self::HandlerFailed->name => "ExceptionHandler ({type}) failed: {__rootMessage__}"
];
/** @see Error::exceptable() */
Expand Down
14 changes: 12 additions & 2 deletions src/IsError.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,10 @@
Spl\RuntimeException
};

use at\peekaboo\MakesMessages;
use at\peekaboo\ {
MakesMessages,
MessageBundle
};

/**
* Defines error cases for an Exceptable.
Expand All @@ -38,11 +41,18 @@
* Otherwise, error codes will be determined by the case's declaration order.
*
* Implementing Enums may define MESSAGES to provide default message templates.
* Defined messages will be wrapped in an array indexed with the Error classname,
* using underscores instead of backslashes.
* Otherwise, messages will be built using the Error class and case name.
*/
trait isError {
use MakesMessages;

/** @see MakeMessages::messageBundle() */
public static function messageBundle() : ResourceBundle {
return new MessageBundle([strtr(static::class, ["\\" => "_"]) => static::MESSAGES]);
}

/** @see Error::throw() */
public function __invoke(array $context = [], Throwable $previous = null) : Exceptable {
assert($this instanceof Error);
Expand Down Expand Up @@ -92,7 +102,7 @@ public function message(array $context = []) : string {
assert($this instanceof Error);

$error = $this->errorName();
$message = $this->makeMessage($error, $context);
$message = $this->makeMessage(strtr($error, ["\\", "_"]), $context);
return (empty($message) || $this->isDefaultFormat($message)) ?
$error :
"{$error}: {$message}";
Expand Down
28 changes: 13 additions & 15 deletions src/Spl/SplError.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,21 +62,19 @@ enum SplError : int implements Error {

/** @see Error::MESSAGES */
public const MESSAGES = [
self::class => [
self::BadFunctionCall->name => "{__rootMessage__}",
self::BadMethodCall->name => "{__rootMessage__}",
self::Domain->name => "{__rootMessage__}",
self::InvalidArgument->name => "{__rootMessage__}",
self::Length->name => "{__rootMessage__}",
self::Logic->name => "{__rootMessage__}",
self::OutOfBounds->name => "{__rootMessage__}",
self::OutOfRange->name => "{__rootMessage__}",
self::Overflow->name => "{__rootMessage__}",
self::Range->name => "{__rootMessage__}",
self::Runtime->name => "{__rootMessage__}",
self::Underflow->name => "{__rootMessage__}",
self::UnexpectedValue->name => "{__rootMessage__}"
]
self::BadFunctionCall->name => "{__rootMessage__}",
self::BadMethodCall->name => "{__rootMessage__}",
self::Domain->name => "{__rootMessage__}",
self::InvalidArgument->name => "{__rootMessage__}",
self::Length->name => "{__rootMessage__}",
self::Logic->name => "{__rootMessage__}",
self::OutOfBounds->name => "{__rootMessage__}",
self::OutOfRange->name => "{__rootMessage__}",
self::Overflow->name => "{__rootMessage__}",
self::Range->name => "{__rootMessage__}",
self::Runtime->name => "{__rootMessage__}",
self::Underflow->name => "{__rootMessage__}",
self::UnexpectedValue->name => "{__rootMessage__}"
];
/** @see Error::exceptable() */
Expand Down

0 comments on commit 96b0c42

Please sign in to comment.