JSocketMUD/
JSocketMUD/dk/socketmud/
JSocketMUD/dk/socketmud/io/
JSocketMUD/dk/socketmud/object/
JSocketMUD/dk/socketmud/util/
package dk.socketmud.util;

public class Colour
{
	public static String escape(String s)
	{
		StringBuffer buf = new StringBuffer();
		char[] c = s.toCharArray();
		int len = s.length();
		int i = 0;
		
		while (i < len)
		{
			switch (c[i])
			{
				default:
					buf.append(c[i++]);
					break;
				case '#':
					i++;
					switch (c[i++])
					{
						default:
							buf.append('#');
							i--;
							break;
						case '#':
							buf.append('#');
							break;
						case 'u': // underline
							buf.append((char) 27);
							buf.append('[');
							buf.append('4');
							buf.append('m');
							break;
						case 'n': // clear ansi colour
							buf.append((char) 27);
							buf.append('[');
							buf.append('0');
							buf.append('m');
							break;
						case 'd': // dark
							buf.append((char) 27);
							buf.append('[');
							buf.append('0');
							buf.append(';');
							buf.append('3');
							buf.append('0');
							buf.append('m');
							break;
						case 'D': // bold dark
							buf.append((char) 27);
							buf.append('[');
							buf.append('1');
							buf.append(';');
							buf.append('3');
							buf.append('0');
							buf.append('m');
							break;
						case 'r': // red
							buf.append((char) 27);
							buf.append('[');
							buf.append('0');
							buf.append(';');
							buf.append('3');
							buf.append('1');
							buf.append('m');
							break;
						case 'R': // bold red
							buf.append((char) 27);
							buf.append('[');
							buf.append('1');
							buf.append(';');
							buf.append('3');
							buf.append('1');
							buf.append('m');
							break;
						case 'g': // green
							buf.append((char) 27);
							buf.append('[');
							buf.append('0');
							buf.append(';');
							buf.append('3');
							buf.append('2');
							buf.append('m');
							break;
						case 'G': // bold green
							buf.append((char) 27);
							buf.append('[');
							buf.append('1');
							buf.append(';');
							buf.append('3');
							buf.append('2');
							buf.append('m');
							break;
						case 'y': // yellow
							buf.append((char) 27);
							buf.append('[');
							buf.append('0');
							buf.append(';');
							buf.append('3');
							buf.append('3');
							buf.append('m');
							break;
						case 'Y': // bold yellow
							buf.append((char) 27);
							buf.append('[');
							buf.append('1');
							buf.append(';');
							buf.append('3');
							buf.append('3');
							buf.append('m');
							break;
						case 'b': // blue
							buf.append((char) 27);
							buf.append('[');
							buf.append('0');
							buf.append(';');
							buf.append('3');
							buf.append('4');
							buf.append('m');
							break;
						case 'B': // bold blue
							buf.append((char) 27);
							buf.append('[');
							buf.append('1');
							buf.append(';');
							buf.append('3');
							buf.append('4');
							buf.append('m');
							break;
						case 'p': // pink
							buf.append((char) 27);
							buf.append('[');
							buf.append('0');
							buf.append(';');
							buf.append('3');
							buf.append('5');
							buf.append('m');
							break;
						case 'P': // bold pink
							buf.append((char) 27);
							buf.append('[');
							buf.append('1');
							buf.append(';');
							buf.append('3');
							buf.append('5');
							buf.append('m');
							break;
						case 'c': // cyan
							buf.append((char) 27);
							buf.append('[');
							buf.append('0');
							buf.append(';');
							buf.append('3');
							buf.append('6');
							buf.append('m');
							break;
						case 'C': // bold cyan
							buf.append((char) 27);
							buf.append('[');
							buf.append('1');
							buf.append(';');
							buf.append('3');
							buf.append('6');
							buf.append('m');
							break;
						case 'w': // white
							buf.append((char) 27);
							buf.append('[');
							buf.append('0');
							buf.append(';');
							buf.append('3');
							buf.append('7');
							buf.append('m');
							break;
						case 'W': // bold white
							buf.append((char) 27);
							buf.append('[');
							buf.append('1');
							buf.append(';');
							buf.append('3');
							buf.append('7');
							buf.append('m');
							break;
					}
					break;
			}
		}

		return buf.toString();
	}
}