68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nulib\output;
 | |
| 
 | |
| use nulib\app\app;
 | |
| use nulib\exceptions;
 | |
| use nulib\output\std\NullMessenger;
 | |
| use nulib\output\std\ProxyMessenger;
 | |
| 
 | |
| trait _TMessenger {
 | |
|   protected static ?IMessenger $msg = null;
 | |
| 
 | |
|   static function set_messenger(IMessenger $msg, bool $replace=false): IMessenger {
 | |
|     if (self::$msg instanceof NullMessenger) self::$msg = null;
 | |
|     if ($replace || self::$msg === null) {
 | |
|       return self::$msg = $msg;
 | |
|     } elseif (self::$msg instanceof ProxyMessenger) {
 | |
|       self::$msg->addMessenger($msg);
 | |
|     } else {
 | |
|       self::$msg = new ProxyMessenger(self::$msg);
 | |
|       self::$msg->addMessenger($msg);
 | |
|     }
 | |
|     return $msg;
 | |
|   }
 | |
| 
 | |
|   static function get(): IMessenger {
 | |
|     return self::$msg ??= new NullMessenger();
 | |
|   }
 | |
| 
 | |
|   static function set_verbosity(string $verbosity): void {
 | |
|     $msg = self::get();
 | |
|     switch ($verbosity) {
 | |
|     case "Q":
 | |
|     case "silent":
 | |
|       $msg->resetParams([
 | |
|         "min_level" => self::NONE,
 | |
|       ]);
 | |
|       break;
 | |
|     case "q":
 | |
|     case "quiet":
 | |
|       $msg->resetParams([
 | |
|         "min_level" => self::MAJOR,
 | |
|       ]);
 | |
|       break;
 | |
|     case "n":
 | |
|     case "normal":
 | |
|       $msg->resetParams([
 | |
|         "min_level" => self::NORMAL,
 | |
|       ]);
 | |
|       break;
 | |
|     case "v":
 | |
|     case "verbose":
 | |
|       $msg->resetParams([
 | |
|         "min_level" => self::MINOR,
 | |
|       ]);
 | |
|       break;
 | |
|     case "D":
 | |
|     case "debug":
 | |
|       app::set_debug();
 | |
|       $msg->resetParams([
 | |
|         "min_level" => self::DEBUG,
 | |
|       ]);
 | |
|       break;
 | |
|     default:
 | |
|       throw exceptions::forbidden_value($verbosity, "verbosity", ["silent", "quiet", "normal", "verbose", "debug"]);
 | |
|     }
 | |
|   }
 | |
| }
 |