mirror of
https://github.com/moparisthebest/Yaaic
synced 2024-08-13 16:53:50 -04:00
294 lines
7.6 KiB
Java
294 lines
7.6 KiB
Java
/*
|
|
Copyright Paul James Mutton, 2001-2007, http://www.jibble.org/
|
|
|
|
This file is part of PircBot.
|
|
|
|
This software is dual-licensed, allowing you to choose between the GNU
|
|
General Public License (GPL) and the www.jibble.org Commercial License.
|
|
Since the GPL may be too restrictive for use in a proprietary application,
|
|
a commercial license is also provided. Full license information can be
|
|
found at http://www.jibble.org/licenses/
|
|
|
|
*/
|
|
|
|
|
|
package org.jibble.pircbot;
|
|
|
|
/**
|
|
* The Colors class provides several static fields and methods that you may
|
|
* find useful when writing an IRC Bot.
|
|
* <p>
|
|
* This class contains constants that are useful for formatting lines
|
|
* sent to IRC servers. These constants allow you to apply various
|
|
* formatting to the lines, such as colours, boldness, underlining
|
|
* and reverse text.
|
|
* <p>
|
|
* The class contains static methods to remove colours and formatting
|
|
* from lines of IRC text.
|
|
* <p>
|
|
* Here are some examples of how to use the contants from within a
|
|
* class that extends PircBot and imports org.jibble.pircbot.*;
|
|
*
|
|
* <pre> sendMessage("#cs", Colors.BOLD + "A bold hello!");
|
|
* <b>A bold hello!</b>
|
|
* sendMessage("#cs", Colors.RED + "Red" + Colors.NORMAL + " text");
|
|
* <font color="red">Red</font> text
|
|
* sendMessage("#cs", Colors.BOLD + Colors.RED + "Bold and red");
|
|
* <b><font color="red">Bold and red</font></b></pre>
|
|
*
|
|
* Please note that some IRC channels may be configured to reject any
|
|
* messages that use colours. Also note that older IRC clients may be
|
|
* unable to correctly display lines that contain colours and other
|
|
* control characters.
|
|
* <p>
|
|
* Note that this class name has been spelt in the American style in
|
|
* order to remain consistent with the rest of the Java API.
|
|
*
|
|
*
|
|
* @since 0.9.12
|
|
* @author Paul James Mutton,
|
|
* <a href="http://www.jibble.org/">http://www.jibble.org/</a>
|
|
* @version 1.4.6 (Build time: Wed Apr 11 19:20:59 2007)
|
|
*/
|
|
public class Colors {
|
|
|
|
|
|
/**
|
|
* Removes all previously applied color and formatting attributes.
|
|
*/
|
|
public static final String NORMAL = "\u000f";
|
|
|
|
|
|
/**
|
|
* Bold text.
|
|
*/
|
|
public static final String BOLD = "\u0002";
|
|
|
|
|
|
/**
|
|
* Underlined text.
|
|
*/
|
|
public static final String UNDERLINE = "\u001f";
|
|
|
|
|
|
/**
|
|
* Reversed text (may be rendered as italic text in some clients).
|
|
*/
|
|
public static final String REVERSE = "\u0016";
|
|
|
|
|
|
/**
|
|
* White coloured text.
|
|
*/
|
|
public static final String WHITE = "\u000300";
|
|
|
|
|
|
/**
|
|
* Black coloured text.
|
|
*/
|
|
public static final String BLACK = "\u000301";
|
|
|
|
|
|
/**
|
|
* Dark blue coloured text.
|
|
*/
|
|
public static final String DARK_BLUE = "\u000302";
|
|
|
|
|
|
/**
|
|
* Dark green coloured text.
|
|
*/
|
|
public static final String DARK_GREEN = "\u000303";
|
|
|
|
|
|
/**
|
|
* Red coloured text.
|
|
*/
|
|
public static final String RED = "\u000304";
|
|
|
|
|
|
/**
|
|
* Brown coloured text.
|
|
*/
|
|
public static final String BROWN = "\u000305";
|
|
|
|
|
|
/**
|
|
* Purple coloured text.
|
|
*/
|
|
public static final String PURPLE = "\u000306";
|
|
|
|
|
|
/**
|
|
* Olive coloured text.
|
|
*/
|
|
public static final String OLIVE = "\u000307";
|
|
|
|
|
|
/**
|
|
* Yellow coloured text.
|
|
*/
|
|
public static final String YELLOW = "\u000308";
|
|
|
|
|
|
/**
|
|
* Green coloured text.
|
|
*/
|
|
public static final String GREEN = "\u000309";
|
|
|
|
|
|
/**
|
|
* Teal coloured text.
|
|
*/
|
|
public static final String TEAL = "\u000310";
|
|
|
|
|
|
/**
|
|
* Cyan coloured text.
|
|
*/
|
|
public static final String CYAN = "\u000311";
|
|
|
|
|
|
/**
|
|
* Blue coloured text.
|
|
*/
|
|
public static final String BLUE = "\u000312";
|
|
|
|
|
|
/**
|
|
* Magenta coloured text.
|
|
*/
|
|
public static final String MAGENTA = "\u000313";
|
|
|
|
|
|
/**
|
|
* Dark gray coloured text.
|
|
*/
|
|
public static final String DARK_GRAY = "\u000314";
|
|
|
|
|
|
/**
|
|
* Light gray coloured text.
|
|
*/
|
|
public static final String LIGHT_GRAY = "\u000315";
|
|
|
|
|
|
/**
|
|
* This class should not be constructed.
|
|
*/
|
|
private Colors() {
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Removes all colours from a line of IRC text.
|
|
*
|
|
* @since PircBot 1.2.0
|
|
*
|
|
* @param line the input text.
|
|
*
|
|
* @return the same text, but with all colours removed.
|
|
*/
|
|
public static String removeColors(String line) {
|
|
int length = line.length();
|
|
StringBuffer buffer = new StringBuffer();
|
|
int i = 0;
|
|
while (i < length) {
|
|
char ch = line.charAt(i);
|
|
if (ch == '\u0003') {
|
|
i++;
|
|
// Skip "x" or "xy" (foreground color).
|
|
if (i < length) {
|
|
ch = line.charAt(i);
|
|
if (Character.isDigit(ch)) {
|
|
i++;
|
|
if (i < length) {
|
|
ch = line.charAt(i);
|
|
if (Character.isDigit(ch)) {
|
|
i++;
|
|
}
|
|
}
|
|
// Now skip ",x" or ",xy" (background color).
|
|
if (i < length) {
|
|
ch = line.charAt(i);
|
|
if (ch == ',') {
|
|
i++;
|
|
if (i < length) {
|
|
ch = line.charAt(i);
|
|
if (Character.isDigit(ch)) {
|
|
i++;
|
|
if (i < length) {
|
|
ch = line.charAt(i);
|
|
if (Character.isDigit(ch)) {
|
|
i++;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
// Keep the comma.
|
|
i--;
|
|
}
|
|
}
|
|
else {
|
|
// Keep the comma.
|
|
i--;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (ch == '\u000f') {
|
|
i++;
|
|
}
|
|
else {
|
|
buffer.append(ch);
|
|
i++;
|
|
}
|
|
}
|
|
return buffer.toString();
|
|
}
|
|
|
|
|
|
/**
|
|
* Remove formatting from a line of IRC text.
|
|
*
|
|
* @since PircBot 1.2.0
|
|
*
|
|
* @param line the input text.
|
|
*
|
|
* @return the same text, but without any bold, underlining, reverse, etc.
|
|
*/
|
|
public static String removeFormatting(String line) {
|
|
int length = line.length();
|
|
StringBuffer buffer = new StringBuffer();
|
|
for (int i = 0; i < length; i++) {
|
|
char ch = line.charAt(i);
|
|
if (ch == '\u000f' || ch == '\u0002' || ch == '\u001f' || ch == '\u0016') {
|
|
// Don't add this character.
|
|
}
|
|
else {
|
|
buffer.append(ch);
|
|
}
|
|
}
|
|
return buffer.toString();
|
|
}
|
|
|
|
|
|
/**
|
|
* Removes all formatting and colours from a line of IRC text.
|
|
*
|
|
* @since PircBot 1.2.0
|
|
*
|
|
* @param line the input text.
|
|
*
|
|
* @return the same text, but without formatting and colour characters.
|
|
*
|
|
*/
|
|
public static String removeFormattingAndColors(String line) {
|
|
return removeFormatting(removeColors(line));
|
|
}
|
|
|
|
}
|