#include "colorTable.h"
using namespace std;
ColorTable ColorTable::_instance;
const char ColorTable::COLOR_ESCAPE = '{';
const char ColorTable::COLOR_CLEAR = 'x';
ColorTable::ColorTable( ) {
const char ESCAPE_STRING[] = {COLOR_ESCAPE, '\0'};
_colormap.insert( make_pair( COLOR_ESCAPE, string( ESCAPE_STRING ) ) ); _colormap.insert( make_pair( COLOR_CLEAR, string( "\033[0;0m" ) ) ); _colormap.insert( make_pair( '\n', string( "\n" ) ) ); _colormap.insert( make_pair( 'W', string( "\033[1;37m" ) ) ); _colormap.insert( make_pair( 'k', string( "\033[1;30m" ) ) ); _colormap.insert( make_pair( 'b', string( "\033[34m" ) ) ); _colormap.insert( make_pair( 'B', string( "\033[1;34m" ) ) ); _colormap.insert( make_pair( 'A', string( "\033[44m" ) ) ); _colormap.insert( make_pair( 'g', string( "\033[32m" ) ) ); _colormap.insert( make_pair( 'G', string( "\033[1;32m" ) ) ); _colormap.insert( make_pair( 'E', string( "\033[42m" ) ) ); _colormap.insert( make_pair( 'c', string( "\033[36m" ) ) ); _colormap.insert( make_pair( 'C', string( "\033[1;36m" ) ) ); _colormap.insert( make_pair( 'r', string( "\033[31m" ) ) ); _colormap.insert( make_pair( 'R', string( "\033[1;31m" ) ) ); _colormap.insert( make_pair( 'D', string( "\033[41" ) ) ); _colormap.insert( make_pair( 'p', string( "\033[35m" ) ) ); _colormap.insert( make_pair( 'P', string( "\033[1;35m" ) ) ); _colormap.insert( make_pair( 'y', string( "\033[33m" ) ) ); _colormap.insert( make_pair( 'Y', string( "\033[1;33m" ) ) ); _colormap.insert( make_pair( 'a', string( "\033[1;44m" ) ) ); _colormap.insert( make_pair( 'd', string( "\033[1;41m" ) ) ); _colormap.insert( make_pair( '^', string( "\033[0;1m" ) ) ); }
const string &ColorTable::Substitute( char key ) {
static const string empty_string;
ColorMap::iterator it( _instance._colormap.find( key ) );
return it == _instance._colormap.end() ? empty_string : it->second;
}