Package Torello.Java
Class C
- java.lang.Object
-
- Torello.Java.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 easily 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 strings 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
ANSI Escape-Codes:
This is a Wikipedia Article that includes information about all Escape-Code Sequences:
ANSI escape code
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 newKey
to the'Console'
Section.
The Key to add is called VirtualTerminalLevel, and its type should be DWORD (set the value to0001
)
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
Hi-Lited Source-Code:- View Here: Torello/Java/C.java
- Open New Browser-Tab: Torello/Java/C.java
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
-
-
Field Summary
Foreground, Text Colors Modifier and Type Field static String
BLACK
static String
BLUE
static boolean
colorANSI
static String
CYAN
static String
GREEN
static String
PURPLE
static String
RED
static String
WHITE
static String
YELLOW
Background Colors Modifier and Type Field static String
BLACK_BKGND
static String
BLUE_BKGND
static String
CYAN_BKGND
static String
GREEN_BKGND
static String
PURPLE_BKGND
static String
RED_BKGND
static String
WHITE_BKGND
static String
YELLOW_BKGND
Bright, Bold Foreground & Text Colors Modifier and Type Field static String
BBLACK
static String
BBLUE
static String
BCYAN
static String
BGREEN
static String
BPURPLE
static String
BRED
static String
BWHITE
static String
BYELLOW
Bright, Bold Background Colors Modifier and Type Field static String
BBLACK_BKGND
static String
BBLUE_BKGND
static String
BCYAN_BKGND
static String
BGREEN_BKGND
static String
BPURPLE_BKGND
static String
BRED_BKGND
static String
BWHITE_BKGND
static String
BYELLOW_BKGND
Stop Color Sequence Modifier and Type Field static String
RESET
-
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()
-
-
-
Field Detail
-
colorANSI
public static final boolean colorANSI
If Java is not running on a UNIX machine, the terminal output that contains "color" will not function. If it does not, then the Shell color commands will default to empty, zero-length strings.
WINDOWS SUPPORT:
Since Windows Release 1909, which was the 2019 Version of Windows 10, MS-DOS Command Prompt Windows will also support ANSI Color-Code Escape Sequences;- Code:
- Exact Field Declaration Expression:
public static final boolean colorANSI;
-
RESET
public static final java.lang.String RESET
- Code:
- Exact Field Declaration Expression:
public static final String RESET = colorANSI ? "\u001B[0m" : "";
-
BLACK
public static final java.lang.String BLACK
- Code:
- Exact Field Declaration Expression:
public static final String BLACK = colorANSI ? "\u001B[30m" : "";
-
RED
public static final java.lang.String RED
- Code:
- Exact Field Declaration Expression:
public static final String RED = colorANSI ? "\u001B[31m" : "";
-
GREEN
public static final java.lang.String GREEN
- Code:
- Exact Field Declaration Expression:
public static final String GREEN = colorANSI ? "\u001B[32m" : "";
-
YELLOW
public static final java.lang.String YELLOW
- Code:
- Exact Field Declaration Expression:
public static final String YELLOW = colorANSI ? "\u001B[33m" : "";
-
BLUE
public static final java.lang.String BLUE
- Code:
- Exact Field Declaration Expression:
public static final String BLUE = colorANSI ? "\u001B[34m" : "";
-
PURPLE
public static final java.lang.String PURPLE
- Code:
- Exact Field Declaration Expression:
public static final String PURPLE = colorANSI ? "\u001B[35m" : "";
-
CYAN
public static final java.lang.String CYAN
- Code:
- Exact Field Declaration Expression:
public static final String CYAN = colorANSI ? "\u001B[36m" : "";
-
WHITE
public static final java.lang.String WHITE
- Code:
- Exact Field Declaration Expression:
public static final String WHITE = colorANSI ? "\u001B[37m" : "";
-
BLACK_BKGND
public static final java.lang.String BLACK_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String BLACK_BKGND = colorANSI ? "\u001B[40m" : "";
-
RED_BKGND
public static final java.lang.String RED_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String RED_BKGND = colorANSI ? "\u001B[41m" : "";
-
GREEN_BKGND
public static final java.lang.String GREEN_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String GREEN_BKGND = colorANSI ? "\u001B[42m" : "";
-
YELLOW_BKGND
public static final java.lang.String YELLOW_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String YELLOW_BKGND = colorANSI ? "\u001B[43m" : "";
-
BLUE_BKGND
public static final java.lang.String BLUE_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String BLUE_BKGND = colorANSI ? "\u001B[44m" : "";
-
PURPLE_BKGND
public static final java.lang.String PURPLE_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String PURPLE_BKGND = colorANSI ? "\u001B[45m" : "";
-
CYAN_BKGND
public static final java.lang.String CYAN_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String CYAN_BKGND = colorANSI ? "\u001B[46m" : "";
-
WHITE_BKGND
public static final java.lang.String WHITE_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String WHITE_BKGND = colorANSI ? "\u001B[47m" : "";
-
BBLACK
public static final java.lang.String BBLACK
- Code:
- Exact Field Declaration Expression:
public static final String BBLACK = colorANSI ? "\u001B[90m" : "";
-
BRED
public static final java.lang.String BRED
- Code:
- Exact Field Declaration Expression:
public static final String BRED = colorANSI ? "\u001B[91m" : "";
-
BGREEN
public static final java.lang.String BGREEN
- Code:
- Exact Field Declaration Expression:
public static final String BGREEN = colorANSI ? "\u001B[92m" : "";
-
BYELLOW
public static final java.lang.String BYELLOW
- Code:
- Exact Field Declaration Expression:
public static final String BYELLOW = colorANSI ? "\u001B[93m" : "";
-
BBLUE
public static final java.lang.String BBLUE
- Code:
- Exact Field Declaration Expression:
public static final String BBLUE = colorANSI ? "\u001B[94m" : "";
-
BPURPLE
public static final java.lang.String BPURPLE
- Code:
- Exact Field Declaration Expression:
public static final String BPURPLE = colorANSI ? "\u001B[95m" : "";
-
BCYAN
public static final java.lang.String BCYAN
- Code:
- Exact Field Declaration Expression:
public static final String BCYAN = colorANSI ? "\u001B[96m" : "";
-
BWHITE
public static final java.lang.String BWHITE
- Code:
- Exact Field Declaration Expression:
public static final String BWHITE = colorANSI ? "\u001B[97m" : "";
-
BBLACK_BKGND
public static final java.lang.String BBLACK_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String BBLACK_BKGND = colorANSI ? "\u001B[100m" : "";
-
BRED_BKGND
public static final java.lang.String BRED_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String BRED_BKGND = colorANSI ? "\u001B[101m" : "";
-
BGREEN_BKGND
public static final java.lang.String BGREEN_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String BGREEN_BKGND = colorANSI ? "\u001B[102m" : "";
-
BYELLOW_BKGND
public static final java.lang.String BYELLOW_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String BYELLOW_BKGND = colorANSI ? "\u001B[103m" : "";
-
BBLUE_BKGND
public static final java.lang.String BBLUE_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String BBLUE_BKGND = colorANSI ? "\u001B[104m" : "";
-
BPURPLE_BKGND
public static final java.lang.String BPURPLE_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String BPURPLE_BKGND = colorANSI ? "\u001B[105m" : "";
-
BCYAN_BKGND
public static final java.lang.String BCYAN_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String BCYAN_BKGND = colorANSI ? "\u001B[106m" : "";
-
BWHITE_BKGND
public static final java.lang.String BWHITE_BKGND
- Code:
- Exact Field Declaration Expression:
public static final String BWHITE_BKGND = colorANSI ? "\u001B[107m" : "";
-
-
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.
NOTE: This method returns an HTMLSPAN
tag which employs aCSS CLASS
. It is (hopefully) obvious that the definitiions for any / allCSS CLASSES
that are used will need to be provided on the page.
The methodgetCSSDefinitions()
will return the complete definition page for allCSS 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 theString
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.
NOTE: This method returns an HTMLSPAN
tag which employs an inline'STYLE'
tag. Remember, if you are converting large text-String's
into HTML, using inlne'STYLE'
attributes could potentially make your HTML file grow much larger, rather quickly.
UsingCSS CLASSES
provided by methodspan(String)
will make your generated HTML somewhat more efficient. If you do, you will need to import the CSS Definitions for these classes.- 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 theString
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)
- Code:
- Exact Method Body:
return toHTML(text, false, true, false);
-
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 JavaString's
that were generated using these ANSI UNIX color escape sequences, and produces a valid HTMLString
that contains HTML<SPAN STYLE="color-information">
replacements!
NOTE: Any new-line characters sequences such as'\n'
and'\r\n'
will be replaces 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 aCRLF
(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 simplifiedCSS Class Name
. TheCLASS
definitions for the returnedString
can be retrieved by simply calling the method:getCSSDefinitions()
.
IMPORTANT: If this parameter does receive a TRUE value, it is imperitive to include theCSS 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("<", "<").replace(">", ">"); // 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 thetoHTML(String, boolean, boolean, boolean)
method, then theString
returned from this method shall provide theCSS Style
definitions needed to use the colors provided bytoHTML(...)
- 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 oftoHTML()
.
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);
-
toHTML
public static java.lang.String toHTML(java.lang.String text, boolean preFormat, boolean escapeHTMLElements, java.lang.String titleStr)
Convenience Method
Creates an'.html'
-file from the output produced bytoHTML(String, boolean, boolean, boolean)
Invokes:getCSSDefinitions()
And Invokes:toHTML(String, boolean, boolean, boolean)
Passes:TRUE
to parameter'useCSSClasses'
- Code:
- Exact Method Body:
return "<HTML>\n" + "<HEAD>\n" + "<TITLE>" + titleStr + "</TITLE>\n" + "<STYLE TYPE='text/css'>\n" + '\n' + // This method simply copies the CSS-Definitions File out of the Java-HTML JAR, and // into a String that is returned to the user. Make sure to wrap that String // inside of a <STYLE>...</STYLE> HTML-Tag. Also - set the background color getCSSDefinitions() + "BODY { background: black; color: white; }\n" + "</STYLE>\n" + "</HEAD>\n" + "<BODY>\n" + (preFormat ? "<PRE>\n" : "") + // NOTE: This just calls the other variant of 'toHTML' - but ensures that 'true' is // passed to the 'useCSSClasses' parameter. toHTML(text, preFormat, escapeHTMLElements, true) + (preFormat ? "</PRE>\n" : "") + "</BODY>\n" + "</HTML>";
-
-