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 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 characterString'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 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
File Size: 18,132 Bytes Line Count: 401 '\n' Characters Found
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;
-
RESET
public static final java.lang.String RESET
-
BLACK
public static final java.lang.String BLACK
-
RED
public static final java.lang.String RED
-
GREEN
public static final java.lang.String GREEN
-
YELLOW
public static final java.lang.String YELLOW
-
BLUE
public static final java.lang.String BLUE
-
PURPLE
public static final java.lang.String PURPLE
-
CYAN
public static final java.lang.String CYAN
-
WHITE
public static final java.lang.String WHITE
-
BLACK_BKGND
public static final java.lang.String BLACK_BKGND
-
RED_BKGND
public static final java.lang.String RED_BKGND
-
GREEN_BKGND
public static final java.lang.String GREEN_BKGND
-
YELLOW_BKGND
public static final java.lang.String YELLOW_BKGND
-
BLUE_BKGND
public static final java.lang.String BLUE_BKGND
-
PURPLE_BKGND
public static final java.lang.String PURPLE_BKGND
-
CYAN_BKGND
public static final java.lang.String CYAN_BKGND
-
WHITE_BKGND
public static final java.lang.String WHITE_BKGND
-
BBLACK
public static final java.lang.String BBLACK
-
BRED
public static final java.lang.String BRED
-
BGREEN
public static final java.lang.String BGREEN
-
BYELLOW
public static final java.lang.String BYELLOW
-
BBLUE
public static final java.lang.String BBLUE
-
BPURPLE
public static final java.lang.String BPURPLE
-
BCYAN
public static final java.lang.String BCYAN
-
BWHITE
public static final java.lang.String BWHITE
-
BBLACK_BKGND
public static final java.lang.String BBLACK_BKGND
-
BRED_BKGND
public static final java.lang.String BRED_BKGND
-
BGREEN_BKGND
public static final java.lang.String BGREEN_BKGND
-
BYELLOW_BKGND
public static final java.lang.String BYELLOW_BKGND
-
BBLUE_BKGND
public static final java.lang.String BBLUE_BKGND
-
BPURPLE_BKGND
public static final java.lang.String BPURPLE_BKGND
-
BCYAN_BKGND
public static final java.lang.String BCYAN_BKGND
-
BWHITE_BKGND
public static final java.lang.String BWHITE_BKGND
-
-
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 HTMLSPAN
-Tag that contains an inlineCSS-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.
CSS Inline-Style:
This method returns an HTMLSPAN
-Tag that contains an inlineSTYLE
-Attribute. Remember, if you are converting large Text-String's
into HTML using inlneSTYLE
-Attributes, your output could potentially grow very large, and rather quickly.
UsingCSS-CLASSES
provided by methodspan(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 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)
-
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!
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 receivesFALSE
, 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 beFALSE
. 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 receivesTRUE
, 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 aTRUE
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); */ return LFEC.readObjectFromFile_JAR (Torello.Java.C.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'
-
-