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:
Dylan K. Taylor 2018-02-11 19:11:51 +00:00
parent 98d6aea7fe
commit b445825467
3 changed files with 95 additions and 95 deletions

View File

@ -214,7 +214,7 @@ class MainLogger extends \AttachableThreadedLogger{
$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);
if(!Terminal::hasFormattingCodes()){

View File

@ -159,4 +159,97 @@ abstract class Terminal{
//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;
}
}

View File

@ -24,7 +24,7 @@ declare(strict_types=1);
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{
public const ESCAPE = "\xc2\xa7"; //§
@ -395,97 +395,4 @@ abstract class TextFormat{
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;
}
}