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(); } }