Class JAnsiTextRenderer

  • All Implemented Interfaces:
    TextRenderer

    public final class JAnsiTextRenderer
    extends java.lang.Object
    implements TextRenderer
    Renders an input as ANSI escaped output.

    Uses the JLine AnsiRenderer syntax to render a message into an ANSI escaped string.

    The default syntax for embedded ANSI codes is:

       @|code(,code)* text|@
     
    For example, to render the message "Hello" in green, use:
       @|green Hello|@
     
    To render the message "Hello" in bold and red, use:
       @|bold,red Warning!|@
     
    You can also define custom style names in the configuration with the syntax:
     %message{ansi}{StyleName=value(,value)*( StyleName=value(,value)*)*}%n
     
    For example:
     %message{ansi}{WarningStyle=red,bold KeyStyle=white ValueStyle=blue}%n
     
    The call site can look like this:
     logger.info("@|KeyStyle {}|@ = @|ValueStyle {}|@", entry.getKey(), entry.getValue());
     

    Note: this class was originally copied and then heavily modified from JAnsi/JLine AnsiRenderer, licensed under an Apache Software License, version 2.0.

    • Constructor Summary

      Constructors 
      Constructor Description
      JAnsiTextRenderer​(java.lang.String[] formats, java.util.Map<java.lang.String,​java.lang.String> defaultStyleMap)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static java.util.Map.Entry<java.lang.String,​java.lang.String> entry​(java.lang.String name, AnsiEscape... codes)  
      java.util.Map<java.lang.String,​java.lang.String> getStyleMap()  
      private static void merge​(java.lang.String escapeSequence, java.lang.StringBuilder output, boolean first)  
      private static <V> java.util.Map<java.lang.String,​V> ofEntries​(java.util.Map.Entry<java.lang.String,​V>... entries)  
      void render​(java.lang.StringBuilder input, java.lang.StringBuilder output)
      Renders input text to an output.
      void render​(java.lang.String input, java.lang.StringBuilder output, java.lang.String styleName)
      Renders input text to an output.
      private void render​(java.lang.String input, java.lang.StringBuilder output, java.lang.String... styleNames)
      Renders the given input with the given names which can be ANSI code names or Log4j style names.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • LOGGER

        private static final Logger LOGGER
      • DefaultExceptionStyleMap

        public static final java.util.Map<java.lang.String,​java.lang.String> DefaultExceptionStyleMap
      • DEFAULT_MESSAGE_STYLE_MAP

        static final java.util.Map<java.lang.String,​java.lang.String> DEFAULT_MESSAGE_STYLE_MAP
      • PREFEDINED_STYLE_MAPS

        private static final java.util.Map<java.lang.String,​java.util.Map<java.lang.String,​java.lang.String>> PREFEDINED_STYLE_MAPS
      • beginToken

        private final java.lang.String beginToken
      • beginTokenLen

        private final int beginTokenLen
      • endToken

        private final java.lang.String endToken
      • endTokenLen

        private final int endTokenLen
      • styleMap

        private final java.util.Map<java.lang.String,​java.lang.String> styleMap
    • Constructor Detail

      • JAnsiTextRenderer

        public JAnsiTextRenderer​(java.lang.String[] formats,
                                 java.util.Map<java.lang.String,​java.lang.String> defaultStyleMap)
    • Method Detail

      • entry

        private static java.util.Map.Entry<java.lang.String,​java.lang.String> entry​(java.lang.String name,
                                                                                          AnsiEscape... codes)
      • ofEntries

        @SafeVarargs
        private static <V> java.util.Map<java.lang.String,​V> ofEntries​(java.util.Map.Entry<java.lang.String,​V>... entries)
      • render

        private void render​(java.lang.String input,
                            java.lang.StringBuilder output,
                            java.lang.String... styleNames)
        Renders the given input with the given names which can be ANSI code names or Log4j style names.
        Parameters:
        input - The input to render
        styleNames - ANSI code names or Log4j style names.
      • merge

        private static void merge​(java.lang.String escapeSequence,
                                  java.lang.StringBuilder output,
                                  boolean first)
      • render

        public void render​(java.lang.String input,
                           java.lang.StringBuilder output,
                           java.lang.String styleName)
                    throws java.lang.IllegalArgumentException
        Description copied from interface: TextRenderer
        Renders input text to an output.
        Specified by:
        render in interface TextRenderer
        Parameters:
        input - The input
        output - The output
        styleName - The style name to use to render the input on the output.
        Throws:
        java.lang.IllegalArgumentException
      • render

        public void render​(java.lang.StringBuilder input,
                           java.lang.StringBuilder output)
                    throws java.lang.IllegalArgumentException
        Description copied from interface: TextRenderer
        Renders input text to an output.
        Specified by:
        render in interface TextRenderer
        Parameters:
        input - The input
        output - The output
        Throws:
        java.lang.IllegalArgumentException
      • getStyleMap

        public java.util.Map<java.lang.String,​java.lang.String> getStyleMap()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object