mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-23 11:26:37 +00:00
TextFormat: Moved toANSI() to Terminal, close #1995
This also removes a cyclic dependency between TextFormat and Terminal, meaning that TextFormat is now standalone without any external dependencies. This is also an API break. Beware all ye who wander here, master = bleeding-edge!
This commit is contained in:
parent
98d6aea7fe
commit
b445825467
@ -214,7 +214,7 @@ class MainLogger extends \AttachableThreadedLogger{
|
|||||||
$threadName = (new \ReflectionClass($thread))->getShortName() . " thread";
|
$threadName = (new \ReflectionClass($thread))->getShortName() . " thread";
|
||||||
}
|
}
|
||||||
|
|
||||||
$message = TextFormat::toANSI(TextFormat::AQUA . "[" . date("H:i:s", $now) . "] " . TextFormat::RESET . $color . "[" . $threadName . "/" . $prefix . "]:" . " " . $message . TextFormat::RESET);
|
$message = Terminal::toANSI(TextFormat::AQUA . "[" . date("H:i:s", $now) . "] " . TextFormat::RESET . $color . "[" . $threadName . "/" . $prefix . "]:" . " " . $message . TextFormat::RESET);
|
||||||
$cleanMessage = TextFormat::clean($message);
|
$cleanMessage = TextFormat::clean($message);
|
||||||
|
|
||||||
if(!Terminal::hasFormattingCodes()){
|
if(!Terminal::hasFormattingCodes()){
|
||||||
|
@ -159,4 +159,97 @@ abstract class Terminal{
|
|||||||
//TODO: iOS
|
//TODO: iOS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a string with colorized ANSI Escape codes for the current terminal
|
||||||
|
* Note that this is platform-dependent and might produce different results depending on the terminal type and/or OS.
|
||||||
|
*
|
||||||
|
* @param string|array $string
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function toANSI($string) : string{
|
||||||
|
if(!is_array($string)){
|
||||||
|
$string = TextFormat::tokenize($string);
|
||||||
|
}
|
||||||
|
|
||||||
|
$newString = "";
|
||||||
|
foreach($string as $token){
|
||||||
|
switch($token){
|
||||||
|
case TextFormat::BOLD:
|
||||||
|
$newString .= Terminal::$FORMAT_BOLD;
|
||||||
|
break;
|
||||||
|
case TextFormat::OBFUSCATED:
|
||||||
|
$newString .= Terminal::$FORMAT_OBFUSCATED;
|
||||||
|
break;
|
||||||
|
case TextFormat::ITALIC:
|
||||||
|
$newString .= Terminal::$FORMAT_ITALIC;
|
||||||
|
break;
|
||||||
|
case TextFormat::UNDERLINE:
|
||||||
|
$newString .= Terminal::$FORMAT_UNDERLINE;
|
||||||
|
break;
|
||||||
|
case TextFormat::STRIKETHROUGH:
|
||||||
|
$newString .= Terminal::$FORMAT_STRIKETHROUGH;
|
||||||
|
break;
|
||||||
|
case TextFormat::RESET:
|
||||||
|
$newString .= Terminal::$FORMAT_RESET;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//Colors
|
||||||
|
case TextFormat::BLACK:
|
||||||
|
$newString .= Terminal::$COLOR_BLACK;
|
||||||
|
break;
|
||||||
|
case TextFormat::DARK_BLUE:
|
||||||
|
$newString .= Terminal::$COLOR_DARK_BLUE;
|
||||||
|
break;
|
||||||
|
case TextFormat::DARK_GREEN:
|
||||||
|
$newString .= Terminal::$COLOR_DARK_GREEN;
|
||||||
|
break;
|
||||||
|
case TextFormat::DARK_AQUA:
|
||||||
|
$newString .= Terminal::$COLOR_DARK_AQUA;
|
||||||
|
break;
|
||||||
|
case TextFormat::DARK_RED:
|
||||||
|
$newString .= Terminal::$COLOR_DARK_RED;
|
||||||
|
break;
|
||||||
|
case TextFormat::DARK_PURPLE:
|
||||||
|
$newString .= Terminal::$COLOR_PURPLE;
|
||||||
|
break;
|
||||||
|
case TextFormat::GOLD:
|
||||||
|
$newString .= Terminal::$COLOR_GOLD;
|
||||||
|
break;
|
||||||
|
case TextFormat::GRAY:
|
||||||
|
$newString .= Terminal::$COLOR_GRAY;
|
||||||
|
break;
|
||||||
|
case TextFormat::DARK_GRAY:
|
||||||
|
$newString .= Terminal::$COLOR_DARK_GRAY;
|
||||||
|
break;
|
||||||
|
case TextFormat::BLUE:
|
||||||
|
$newString .= Terminal::$COLOR_BLUE;
|
||||||
|
break;
|
||||||
|
case TextFormat::GREEN:
|
||||||
|
$newString .= Terminal::$COLOR_GREEN;
|
||||||
|
break;
|
||||||
|
case TextFormat::AQUA:
|
||||||
|
$newString .= Terminal::$COLOR_AQUA;
|
||||||
|
break;
|
||||||
|
case TextFormat::RED:
|
||||||
|
$newString .= Terminal::$COLOR_RED;
|
||||||
|
break;
|
||||||
|
case TextFormat::LIGHT_PURPLE:
|
||||||
|
$newString .= Terminal::$COLOR_LIGHT_PURPLE;
|
||||||
|
break;
|
||||||
|
case TextFormat::YELLOW:
|
||||||
|
$newString .= Terminal::$COLOR_YELLOW;
|
||||||
|
break;
|
||||||
|
case TextFormat::WHITE:
|
||||||
|
$newString .= Terminal::$COLOR_WHITE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$newString .= $token;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $newString;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ declare(strict_types=1);
|
|||||||
namespace pocketmine\utils;
|
namespace pocketmine\utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class used to handle Minecraft chat format, and convert it to other formats like ANSI or HTML
|
* Class used to handle Minecraft chat format, and convert it to other formats like HTML
|
||||||
*/
|
*/
|
||||||
abstract class TextFormat{
|
abstract class TextFormat{
|
||||||
public const ESCAPE = "\xc2\xa7"; //§
|
public const ESCAPE = "\xc2\xa7"; //§
|
||||||
@ -395,97 +395,4 @@ abstract class TextFormat{
|
|||||||
|
|
||||||
return $newString;
|
return $newString;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a string with colorized ANSI Escape codes
|
|
||||||
*
|
|
||||||
* @param string|array $string
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static function toANSI($string) : string{
|
|
||||||
if(!is_array($string)){
|
|
||||||
$string = self::tokenize($string);
|
|
||||||
}
|
|
||||||
|
|
||||||
$newString = "";
|
|
||||||
foreach($string as $token){
|
|
||||||
switch($token){
|
|
||||||
case TextFormat::BOLD:
|
|
||||||
$newString .= Terminal::$FORMAT_BOLD;
|
|
||||||
break;
|
|
||||||
case TextFormat::OBFUSCATED:
|
|
||||||
$newString .= Terminal::$FORMAT_OBFUSCATED;
|
|
||||||
break;
|
|
||||||
case TextFormat::ITALIC:
|
|
||||||
$newString .= Terminal::$FORMAT_ITALIC;
|
|
||||||
break;
|
|
||||||
case TextFormat::UNDERLINE:
|
|
||||||
$newString .= Terminal::$FORMAT_UNDERLINE;
|
|
||||||
break;
|
|
||||||
case TextFormat::STRIKETHROUGH:
|
|
||||||
$newString .= Terminal::$FORMAT_STRIKETHROUGH;
|
|
||||||
break;
|
|
||||||
case TextFormat::RESET:
|
|
||||||
$newString .= Terminal::$FORMAT_RESET;
|
|
||||||
break;
|
|
||||||
|
|
||||||
//Colors
|
|
||||||
case TextFormat::BLACK:
|
|
||||||
$newString .= Terminal::$COLOR_BLACK;
|
|
||||||
break;
|
|
||||||
case TextFormat::DARK_BLUE:
|
|
||||||
$newString .= Terminal::$COLOR_DARK_BLUE;
|
|
||||||
break;
|
|
||||||
case TextFormat::DARK_GREEN:
|
|
||||||
$newString .= Terminal::$COLOR_DARK_GREEN;
|
|
||||||
break;
|
|
||||||
case TextFormat::DARK_AQUA:
|
|
||||||
$newString .= Terminal::$COLOR_DARK_AQUA;
|
|
||||||
break;
|
|
||||||
case TextFormat::DARK_RED:
|
|
||||||
$newString .= Terminal::$COLOR_DARK_RED;
|
|
||||||
break;
|
|
||||||
case TextFormat::DARK_PURPLE:
|
|
||||||
$newString .= Terminal::$COLOR_PURPLE;
|
|
||||||
break;
|
|
||||||
case TextFormat::GOLD:
|
|
||||||
$newString .= Terminal::$COLOR_GOLD;
|
|
||||||
break;
|
|
||||||
case TextFormat::GRAY:
|
|
||||||
$newString .= Terminal::$COLOR_GRAY;
|
|
||||||
break;
|
|
||||||
case TextFormat::DARK_GRAY:
|
|
||||||
$newString .= Terminal::$COLOR_DARK_GRAY;
|
|
||||||
break;
|
|
||||||
case TextFormat::BLUE:
|
|
||||||
$newString .= Terminal::$COLOR_BLUE;
|
|
||||||
break;
|
|
||||||
case TextFormat::GREEN:
|
|
||||||
$newString .= Terminal::$COLOR_GREEN;
|
|
||||||
break;
|
|
||||||
case TextFormat::AQUA:
|
|
||||||
$newString .= Terminal::$COLOR_AQUA;
|
|
||||||
break;
|
|
||||||
case TextFormat::RED:
|
|
||||||
$newString .= Terminal::$COLOR_RED;
|
|
||||||
break;
|
|
||||||
case TextFormat::LIGHT_PURPLE:
|
|
||||||
$newString .= Terminal::$COLOR_LIGHT_PURPLE;
|
|
||||||
break;
|
|
||||||
case TextFormat::YELLOW:
|
|
||||||
$newString .= Terminal::$COLOR_YELLOW;
|
|
||||||
break;
|
|
||||||
case TextFormat::WHITE:
|
|
||||||
$newString .= Terminal::$COLOR_WHITE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$newString .= $token;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $newString;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user