private void testFullAnsiEmptyConfig(final ThrowableFormatOptions tfo) { final TextRenderer textRenderer = tfo.getTextRenderer(); Assert.assertNotNull(textRenderer); Assert.assertTrue(textRenderer instanceof JAnsiTextRenderer); final JAnsiTextRenderer jansiRenderer = (JAnsiTextRenderer) textRenderer; final Map<String, Code[]> styleMap = jansiRenderer.getStyleMap(); // We have defaults Assert.assertFalse(styleMap.isEmpty()); Assert.assertNotNull(styleMap.get("Name")); }
/** * Renders the given text with the given names which can be ANSI code names or Log4j style names. * * @param text * The text to render * @param names * ANSI code names or Log4j style names. * @return A rendered string containing ANSI codes. */ private String render(final String text, final String... names) { final Ansi ansi = Ansi.ansi(); for (final String name : names) { final Code[] codes = styleMap.get(name); if (codes != null) { render(ansi, codes); } else { render(ansi, toCode(name)); } } return ansi.a(text).reset().toString(); }
private void render(final Ansi ansi, final Code... codes) { for (final Code code : codes) { render(ansi, code); } }
final String styleMapStr = option.equals("ansi") ? Strings.EMPTY : option.substring("ansi(".length(), option.length() - 1); ansiRenderer = new JAnsiTextRenderer(new String[] { null, styleMapStr }, JAnsiTextRenderer.DefaultExceptionStyleMap); } else {
final Code[] codes = new Code[codeNames.length]; for (int i = 0; i < codes.length; i++) { codes[i] = toCode(codeNames[i]);
@Override public void render(final String input, final StringBuilder output, final String styleName) throws IllegalArgumentException { output.append(render(input, styleName)); }
private TextRenderer loadMessageRenderer(final String[] options) { if (options != null) { for (final String option : options) { switch (option.toUpperCase(Locale.ROOT)) { case "ANSI": if (Loader.isJansiAvailable()) { return new JAnsiTextRenderer(options, JAnsiTextRenderer.DefaultMessageStyleMap); } StatusLogger.getLogger() .warn("You requested ANSI message rendering but JANSI is not on the classpath."); return null; case "HTML": return new HtmlTextRenderer(options); } } } return null; }
/** * Test {@code %throwable{full}{ansi(Warning=red Key=blue Value=cyan))} } */ @Test public void testFullAnsiWithCustomStyles() { final ThrowableFormatOptions tfo = test(new String[] { "full", "ansi(Warning=red Key=blue Value=cyan)" }, Integer.MAX_VALUE, Strings.LINE_SEPARATOR, null); final TextRenderer textRenderer = tfo.getTextRenderer(); Assert.assertNotNull(textRenderer); Assert.assertTrue(textRenderer instanceof JAnsiTextRenderer); final JAnsiTextRenderer jansiRenderer = (JAnsiTextRenderer) textRenderer; final Map<String, Code[]> styleMap = jansiRenderer.getStyleMap(); Assert.assertArrayEquals(new Code[] { Code.RED }, styleMap.get("Warning")); Assert.assertArrayEquals(new Code[] { Code.BLUE }, styleMap.get("Key")); Assert.assertArrayEquals(new Code[] { Code.CYAN }, styleMap.get("Value")); }
return; final String replacement = render(items[1], items[0].split(","));
/** * Test {@code %throwable{full}{ansi(Warning=red Key=blue,bg_red Value=cyan,bg_black,underline)} } */ @Test public void testFullAnsiWithCustomComplexStyles() { final ThrowableFormatOptions tfo = test( new String[] { "full", "ansi(Warning=red Key=blue,bg_red Value=cyan,bg_black,underline)" }, Integer.MAX_VALUE, Strings.LINE_SEPARATOR, null); final TextRenderer textRenderer = tfo.getTextRenderer(); Assert.assertNotNull(textRenderer); Assert.assertTrue(textRenderer instanceof JAnsiTextRenderer); final JAnsiTextRenderer jansiRenderer = (JAnsiTextRenderer) textRenderer; final Map<String, Code[]> styleMap = jansiRenderer.getStyleMap(); Assert.assertArrayEquals(new Code[] { Code.RED }, styleMap.get("Warning")); Assert.assertArrayEquals(new Code[] { Code.BLUE, Code.BG_RED }, styleMap.get("Key")); Assert.assertArrayEquals(new Code[] { Code.CYAN, Code.BG_BLACK, Code.UNDERLINE }, styleMap.get("Value")); }
/** * Test {@code %throwable{full}{ansi(Warning=red))} } */ @Test public void testFullAnsiWithCustomStyle() { final ThrowableFormatOptions tfo = test(new String[] { "full", "ansi(Warning=red)" }, Integer.MAX_VALUE, Strings.LINE_SEPARATOR, null); final TextRenderer textRenderer = tfo.getTextRenderer(); Assert.assertNotNull(textRenderer); Assert.assertTrue(textRenderer instanceof JAnsiTextRenderer); final JAnsiTextRenderer jansiRenderer = (JAnsiTextRenderer) textRenderer; final Map<String, Code[]> styleMap = jansiRenderer.getStyleMap(); Assert.assertArrayEquals(new Code[] { Code.RED }, styleMap.get("Warning")); }