Package Torello.Java

Class C


  • public class C
    extends java.lang.Object
    A UNIX Terminal Color-Codes implementation for printing colored text to terminal.

    This class is particularly usable if you are logged into the Google Cloud Server "Cloud Shell" interface for writing your Java Code. The instance of Bourne Again Shell that is provided allows these colors to display quite well. Generally these escape color codes ought to be usable by any UNIX-related terminal output. Only the oldest terminals still use only green.

    IMPORTANT:
    These colors to do not automatically translate on a Windows, DOS or Apple Computer Terminal Output Display. If you load this Java-HTML package on a terminal or device that is not a UNIX system, this class will automatically default every one of these character String's to the empty, zero-length, String. This is to facilitate / guarantee that people who write UNIX-specific code will have their terminal-output displayed properly when their write-once, run-anywhere Java methods are run on non-UNIX platforms.



    From StackOverFlow.com
    How to print color in console using System.out.println?

    How can I print color in console? I want to show data in colors when the processor sends data and in different colors when it receives data



    This is a Wikipedia Article that includes information about all Escape-Code Sequences:

    ANSI escape code

    This is some Example Code using the colors in this class:

    Example:
    import static Torello.Java.C.*;
    
    // On a UNIX Terminal, this will print in color=red.
    // On a non-UNIX terminal, these fields will evaluate to an empty-string, and the color-codes will
    // be ignored.
    //
    // NOTE: Macintosh and MS-DOS do not read UNIX Color-Codes, without proper configuration...
    
    System.out.println(RED + "This text is red!" + RESET);
    
    // Also, if you wish to change the background color of the text, the following will work:
    System.out.println(GREEN_BKGND + "This text has a green background but default text!" + RESET);
    System.out.println(RED + "This text has red text but a default background!" + RESET);
    System.out.println(GREEN_BKGND + C.RED + "This text has a green background and red text!" + RESET);
    



    Windows 10+ Support:
    Beginning in Windows 10, ANSI Color Codes are supported. This decision was quickly upended, and now one "minor" Registry-Key is required to be set in order for the Command Prompt Window to show Color Codes. You simply need to open the Windows Registry Editor, and add a new Key to the 'Console' Section.

    The Key to add is called VirtualTerminalLevel, and its type should be DWORD (set the value to 0001)



    Below is what the menu option looks like in Windows 11, in order to set a Registry Key. Once this has been set, Windows now can also show colors at the Command-Prompt.



    Below is some sample Java-HTML output that uses the standard ANSI Color Escape Sequences, rendered inside a typical Windows/DOS 'cmd.exe' Window




    Stateless Class:
    This class neither contains any program-state, nor can it be instantiated. The @StaticFunctional Annotation may also be called 'The Spaghetti Report'. Static-Functional classes are, essentially, C-Styled Files, without any constructors or non-static member fields. It is a concept very similar to the Java-Bean's @Stateless Annotation.

    • 1 Constructor(s), 1 declared private, zero-argument constructor
    • 7 Method(s), 7 declared static
    • 44 Field(s), 44 declared static, 44 declared final


    • Method Summary

       
      Convert text w/ Color-Code Sequences to HTML w/ <SPAN> Tags
      Modifier and Type Method
      static String toHTML​(String text)
      static String toHTML​(String text, boolean preFormat, boolean escapeHTMLElements, boolean useCSSClasses)
      static String toHTML​(String text, boolean preFormat, boolean escapeHTMLElements, String titleStr)
       
      Get a CSS-CLASS Definition for a <SPAN>-Tag from a Color-Code Sequence
      Modifier and Type Method
      static String span​(String charCode)
       
      Get a CSS Inline STYLE-Attribute from a Color-Code Sequence
      Modifier and Type Method
      static String spanInlineStyle​(String charCode)
       
      Retrieve CSS CLASS Definitions File as a String
      Modifier and Type Method
      static String getCSSDefinitions()
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • span

        🡅  🡇     🗕  🗗  🗖
        public static java.lang.String span​(java.lang.String charCode)
        This will convert a UNIX 'Character Code' into an HTML Tag if it is necessary to convert UNIX colored-text into HTML.

        CSS-Definitions:
        This method returns an HTML SPAN-Tag that contains an inline CSS-CLASS. It is (hopefully) obvious that the definitiions for any / all CSS-CLASSES that are used will need to be provided on the page.

        The method getCSSDefinitions() will return the complete definition page for all CSS CLASSES that are employed by this method.

        You may also view the contents of the CSS Definitions Below:

        Shell.C CSS Definitions
        Parameters:
        charCode - Any one of the 33 codes defined in this class.
        Returns:
        An HTML <SPAN CLASS=...> element that may be used as a substitute for one of the codes defined in this class.
        Throws:
        java.lang.IllegalArgumentException - If the String that is passed to parameter 'charCode' is not one of the defined codes in this class.
        See Also:
        getCSSDefinitions()
        Code:
        Exact Method Body:
         Integer arrPos = charCodesMap.get(charCode);
        
         if (arrPos == null) throw new IllegalArgumentException(
             "The value passed to parameter 'charCode' is not one of the defined codes in " +
             "this class."
         );
        
         return htmlSpansCSSClasses[arrPos];
        
      • spanInlineStyle

        🡅  🡇     🗕  🗗  🗖
        public static java.lang.String spanInlineStyle​(java.lang.String charCode)
        This will convert a UNIX 'Character Code' into an HTML Tag if it is necessary to convert UNIX colored-text into HTML.

        CSS Inline-Style:
        This method returns an HTML SPAN-Tag that contains an inline STYLE-Attribute. Remember, if you are converting large Text-String's into HTML using inlne STYLE-Attributes, your output could potentially grow very large, and rather quickly.

        Using CSS-CLASSES provided by method span(java.lang.String) will make your generated HTML somewhat more efficient. If you do, you must remember to import the CSS Definitions for these classes somewhere in your HTML-File.
        Parameters:
        charCode - Any one of the 33 codes defined in this class.
        Returns:
        An HTML <SPAN STYLE=...> element that may be used as a substitute for one of the color-codes defined in this class.
        Throws:
        java.lang.IllegalArgumentException - If the String that is passed to parameter 'charCode' is not one of the defined codes in this class.
        Code:
        Exact Method Body:
         Integer arrPos = charCodesMap.get(charCode);
        
         if (arrPos == null) throw new IllegalArgumentException(
             "The value passed to parameter 'charCode' is not one of the defined codes in " +
             "this class."
         );
        
         return htmlSpansStyleAttributes[arrPos];
        
      • toHTML

        🡅  🡇     🗕  🗗  🗖
        public static java.lang.String toHTML​(java.lang.String text,
                                              boolean preFormat,
                                              boolean escapeHTMLElements,
                                              boolean useCSSClasses)
        Converts the instances of these escape-sequences that are found inside of Java String's that were generated using these ANSI UNIX color escape sequences, and produces a valid HTML String that contains HTML <SPAN STYLE="color-information"> replacements!

        New-Line Characters:
        Any new-line Character-Sequences such as '\n' or '\r\n' will be replaced with HTML <BR /> elements.
        Parameters:
        text - This should be any string, usually one that is saved from a 'StorageWriter', although any text that includes these UNIX Color Escape Codes is fine.
        preFormat - When this parameter receives FALSE, everywhere in the input text-String that a CRLF (new-line) occurs, that newline will be replaced by an HTML <BR /> element, in addition to the original newline.

        This parameter is referring to the CSS 'white-space: pre' setting, which can be used. Althought, sometimes going with the plain-old-vanilla <BR /> tag can also be advisable.
        escapeHTMLElements - Whenever HTML is sent to the input-parameter 'text' - if the intention is to render the HTML using the browser, this parameter should be FALSE. If it is intended to allow the UI to "show the HTML" like it were text-to-be-viewed, then each and every greater-than-symbol '>' and also every less-than-symbol '<' will be escaped. This is done to prevent the browser from trying to parse the text as HTML.
        useCSSClasses - When this parameter receives TRUE, all returned <SPAN STYLE=...> elements shall be converted to using a simplified CSS Class Name. The CLASS definitions for the returned String can be retrieved by simply calling the method: getCSSDefinitions().

        IMPORTANT: If this parameter does receive a TRUE value, it is imperitive to include the CSS STYLE definitions that are returned by the above mentioned method, or else the colors shall not be visible.

        You may view the contents of the CSS Definitions Below:

        Shell.C CSS Definitions
        Returns:
        Every UNIX-ANSI color escape-sequence that is found/identified in this text will be replaced with an HTML <SPAN STYLE="color: a-color; background: a-background-color"> element.
        Code:
        Exact Method Body:
         // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
         // Old Way, much less efficient
         // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
        
         // If the input text, itself, has HTML elements, then those have to be "escaped" to
         // properly render.  If the intention was to have them rendered has HTML Elements
         // (not text), then this boolean should be false.
        
         // if (escapeHTMLElements) text = text.replace("<", "&lt;").replace(">", "&gt;");
        
         // With "Pre-Formatted Text" - there is no need to add "<BR />" where line-breaks
         // occur CRLF will automatically be inserted courtesy of the browser
        
         // if (! preFormat) text = text.replaceAll("\n|\r\n|\r", "<BR />\n");
        
        
         // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
         // Quite a bit faster
         // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
        
         String[] matchStrs = null;
        
         // Replaces both '<', '>' **AND** '\n', '\r', '\n\r', '\r\n' (all at once)
         if (escapeHTMLElements && (! preFormat))            matchStrs = MATCH_STRS_1;
        
         // Replaces ONLY '<' and '>'
         else if (escapeHTMLElements && preFormat)           matchStrs = MATCH_STRS_2;
        
         // Replaces ONLY '\n', '\r', '\n\r', '\r\n'
         else if ((! escapeHTMLElements) && (! preFormat))   matchStrs = MATCH_STRS_3;
        
         // NOW RUN IT...
         if (matchStrs != null) text = StrReplace.r(text, matchStrs, C::REPLACER);
        
         return StrReplace.r(
             text, charCodesArr, 
             useCSSClasses ? htmlSpansCSSClasses : htmlSpansStyleAttributes
         );
        
      • getCSSDefinitions

        🡅  🡇     🗕  🗗  🗖
        public static java.lang.String getCSSDefinitions()
        If the 'useCSSDefinitions' option is selected with the toHTML(String, boolean, boolean, boolean) method, then the String returned from this method shall provide the CSS Style definitions needed to use the colors provided by toHTML(...)
        Returns:
        This shall visit the internal data-files for this JAR distribution, and return a list of CSS Style definitions that will colorize the HTML produced by an invocation of toHTML().

        You may view the contents of the CSS Definitions Below:

        Shell.C CSS Definitions
        Code:
        Exact Method Body:
         /*
         return LFEC.readObjectFromFile_JAR
             (Torello.Data.DataFileLoader.class, CSS_DEFINITIONS_FILE, true, String.class);
         */
        
         return LFEC.readObjectFromFile_JAR
             (Torello.Java.C.class, CSS_DEFINITIONS_FILE, true, String.class);