#define RESET "[0m" #define BOLD "[1m" #define FLASH "[5m" #define BLACK "[30m" #define RED "[31m" #define GREEN "[32m" #define ORANGE "[33m" #define YELLOW BOLD + ORANGE #define BLUE "[34m" #define CYAN "[36m" #define MAGENTA "[35m" #define WHITE "[37m" #define B_RED "[41m" #define B_GREEN "[42m" #define B_ORANGE "[43m" #define B_YELLOW BOLD + B_ORANGE #define B_BLUE "[44m" #define B_CYAN "[46m" #define B_BLACK "[40m" #define B_WHITE "[47m" #define CLEARLINE "[L[G" #define B_MAGENTA "[45m" #define INITTERM "[H[2J" #define ENDTERM "" #define SAVE "7" #define RESTORE "8" #define HOME "[H" mapping translations; void create( void ) { translations = ([ "RESET" : RESET, "BOLD" : BOLD, "FLASH" : FLASH, "RED" : RED, "GREEN" : GREEN, "ORANGE" : ORANGE, "YELLOW" : YELLOW, "BLUE" : BLUE, "CYAN" : CYAN, "MAGENTA" : MAGENTA, "WHITE" : WHITE, "B_RED" : B_RED, "B_GREEN" : B_GREEN, "B_ORANGE" : B_ORANGE, "B_YELLOW" : B_YELLOW, "B_BLUE" : B_BLUE, "B_CYAN" : B_CYAN, "B_BLACK" : B_BLACK, "B_WHITE" : B_WHITE, "B_MAGENTA" : B_MAGENTA, "CLEARLINE" : CLEARLINE, "INITTERM" : INITTERM, "ENDTERM" : ENDTERM, "SAVE" : SAVE, "RESTORE" : RESTORE, "HOME" : HOME, ]); } string strip_colors( string str ) { string* tmp; string msg; int i; tmp = explode( str, "%^" ); for( i=0; i < sizeof( tmp ); i++ ) { if( member_array( tmp[i], map_indices(translations) ) != -1 ) { tmp[i] = ""; } } msg = implode( tmp, "" ); return( msg ); } string parse_colors( string str ) { string* tmp; string msg; int i; tmp = explode( str, "%^" ); for( i=0; i < sizeof( tmp ); i++ ) { if( member_array( tmp[i], map_indices(translations) ) != -1 ) { tmp[i] = translations[ tmp[i] ]; } } msg = implode( tmp, "" ); return( msg ); }