From e62e4ebfa42061f5cfe9dae78fe29f4b76c67162 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Wed, 27 Dec 2023 01:53:46 +0400 Subject: [PATCH] modifs.mineures sans commentaires --- src/output/IMessenger.php | 2 +- src/output/StdMessenger.php | 24 ++++++++++++++++-------- src/output/TODO.md | 3 +++ 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/output/IMessenger.php b/src/output/IMessenger.php index d54740b..d40bde9 100644 --- a/src/output/IMessenger.php +++ b/src/output/IMessenger.php @@ -5,7 +5,7 @@ namespace nur\sery\output; * Interface IMessenger: un objet pouvant afficher des messages de l'application */ interface IMessenger { - const LEVEL_DEBUG = -1, LEVEL_NORMAL = 0, LEVEL_MAJOR = 1; + const LEVEL_DEBUG = -1, LEVEL_NORMAL = 0, LEVEL_MAJOR = 1, LEVEL_NONE = 2; /** * commencer une section. diff --git a/src/output/StdMessenger.php b/src/output/StdMessenger.php index 9272475..5e846ed 100644 --- a/src/output/StdMessenger.php +++ b/src/output/StdMessenger.php @@ -11,6 +11,7 @@ class StdMessenger implements IMessenger { self::LEVEL_DEBUG, self::LEVEL_NORMAL, self::LEVEL_MAJOR, + self::LEVEL_NONE, ]; const LEVEL_MAP = [ "debug" => self::LEVEL_DEBUG, @@ -19,16 +20,19 @@ class StdMessenger implements IMessenger { "n" => self::LEVEL_NORMAL, "major" => self::LEVEL_MAJOR, "m" => self::LEVEL_MAJOR, + "none" => self::LEVEL_NONE, ]; - protected static function verifix_level($level, bool $debug): int { - if ($level === null) $level = $debug? self::LEVEL_DEBUG: self::LEVEL_NORMAL; + protected static function verifix_level($level, int $max_level=self::LEVEL_MAJOR): int { if (!in_array($level, self::VALID_LEVELS, true)) { $level = cl::get(self::LEVEL_MAP, $level, $level); } if (!in_array($level, self::VALID_LEVELS, true)) { throw new Exception("$level: invalid level"); } + if ($level > $max_level) { + throw new Exception("$level: level not allowed here"); + } return $level; } @@ -78,8 +82,12 @@ class StdMessenger implements IMessenger { $output = cl::get($params, "output"); $color = cl::get($params, "color"); $debug = boolval(cl::get($params, "debug")); - $minLevel = self::verifix_level(cl::get($params, "min_level"), $debug); - $defaultLevel = self::verifix_level(cl::get($params, "default_level"), false); + $defaultLevel = cl::get($params, "default_level"); + if ($defaultLevel === null) $defaultLevel = self::LEVEL_NORMAL; + $defaultLevel = self::verifix_level($defaultLevel); + $minLevel = cl::get($params, "min_level"); + if ($minLevel === null) $minLevel = $debug? self::LEVEL_DEBUG: self::LEVEL_NORMAL; + $minLevel = self::verifix_level($minLevel, self::LEVEL_NONE); $params = [ "color" => $color, @@ -91,8 +99,8 @@ class StdMessenger implements IMessenger { $this->out = new StdOutput(STDOUT, $params); $this->err = new StdOutput(STDERR, $params); } - $this->minLevel = $minLevel; $this->defaultLevel = $defaultLevel; + $this->minLevel = $minLevel; $this->inSection = false; $this->titles = []; $this->title = null; @@ -106,12 +114,12 @@ class StdMessenger implements IMessenger { /** @var StdOutput la sortie d'erreur */ protected $err; - /** @var int level minimum que doivent avoir les messages pour être affichés */ - protected $minLevel; - /** @var int level par défaut dans lequel les messages sont affichés */ protected $defaultLevel; + /** @var int level minimum que doivent avoir les messages pour être affichés */ + protected $minLevel; + protected function checkLevel(?int &$level): bool { if ($level === null) $level = $this->defaultLevel; return $level >= $this->minLevel; diff --git a/src/output/TODO.md b/src/output/TODO.md index 7c3bebb..2c33763 100644 --- a/src/output/TODO.md +++ b/src/output/TODO.md @@ -7,6 +7,9 @@ si pas de message, prendre le message de l'exception par défaut * [ ] possibilité de paramétrer le nom du fichier destination pour faire une rotation des logs +* [ ] support quiet (uniquement major), very-quiet (aucun message n'est affiché) +* [ ] support verbose? cela suppose rajouter un niveau supplémentaire `LEVEL_MINOR` + entre `LEVEL_DEBUG` et `LEVEL_NORMAL` ## Principe