SGRCodes.java
package org.jbehave.core.reporters;
import static org.jbehave.core.reporters.SGRCodes.SGRCode.BLUE;
import static org.jbehave.core.reporters.SGRCodes.SGRCode.BRIGHT_MAGENTA;
import static org.jbehave.core.reporters.SGRCodes.SGRCode.GREEN;
import static org.jbehave.core.reporters.SGRCodes.SGRCode.MAGENTA;
import static org.jbehave.core.reporters.SGRCodes.SGRCode.RED;
import static org.jbehave.core.reporters.SGRCodes.SGRCode.UNDERLINE;
import static org.jbehave.core.reporters.SGRCodes.SGRCode.YELLOW;
import java.util.HashMap;
import java.util.Map;
/**
* <p>
* Manages {@link SGRCode}s used by {@link ANSIConsoleOutput}
* </p>
*/
public class SGRCodes {
public enum SGRCode {
RESET(0),
BOLD(1),
FAINT(2),
ITALIC(3),
UNDERLINE(4),
SLOW_BLINK(5),
RAPID_BLINK(6),
NEGATIVE(7),
CONCEALED(8),
CROSSED_OUT(9),
BLACK(30),
RED(31),
GREEN(32),
YELLOW(33),
BLUE(34),
MAGENTA(35),
CYAN(36),
WHITE(37),
ON_BLACK(40),
ON_RED(41),
ON_GREEN(42),
ON_YELLOW(43),
ON_BLUE(44),
ON_MAGENTA(45),
ON_CYAN(46),
ON_WHITE(47),
BRIGHT_BLACK(90),
BRIGHT_RED(91),
BRIGHT_GREEN(92),
BRIGHT_YELLOW(93),
BRIGHT_BLUE(94),
BRIGHT_MAGENTA(95),
BRIGHT_CYAN(96),
BRIGHT_WHITE(97);
private final int code;
SGRCode(int code) {
this.code = code;
}
@Override
public String toString() {
return Integer.toString(code);
}
}
@SuppressWarnings("serial")
public static final Map<String, SGRCode> DEFAULT_CODES = new HashMap<String, SGRCode>() {
{
put("narrative", BLUE);
put("beforeScenario", BRIGHT_MAGENTA);
put("successful", GREEN);
put("pending", YELLOW);
put("pendingMethod", YELLOW);
put("notPerformed", MAGENTA);
put("comment", BLUE);
put("ignorable", BLUE);
put("failed", RED);
put("cancelled", RED);
put("restarted", MAGENTA);
put("highlight", UNDERLINE);
}
};
private final Map<String, SGRCode> codes;
public SGRCodes() {
this(DEFAULT_CODES);
}
public SGRCodes(Map<String, SGRCode> codes) {
this.codes = codes;
}
public void assignCode(String key, SGRCode code) {
codes.put(key, code);
}
public boolean hasCode(String key) {
return codes.containsKey(key);
}
public SGRCode getCode(String key) {
if (codes.containsKey(key)) {
return codes.get(key);
}
throw new RuntimeException("No code found for key " + key);
}
}