package forgeperms;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cpw.mods.fml.common.FMLLog;
public class Log {
private static final Pattern color_pattern = Pattern.compile("(?i)§([0-9A-FK-OR])");
public static Logger mytownLogger = Logger.getLogger("ForgePerms");
public static boolean isUnix = isUnix();
public static void init() {
mytownLogger.setParent(FMLLog.getLogger());
}
public static void info(String msg, Object... paras) {
log(Level.INFO, msg, paras);
}
public static void warning(String msg, Object... paras) {
log(Level.WARNING, msg, paras);
}
public static void severe(String msg, Object... paras) {
log(Level.SEVERE, msg, paras);
}
public static void severe(String msg, Throwable t, Object... paras) {
log(Level.SEVERE, msg, t, paras);
}
public static void log(Level l, String msg, Object... paras) {
mytownLogger.log(l, consoleColors(String.format("§7[§a%s§7]%s", ForgePerms.MOD_NAME, String.format(msg, paras))));
}
public static void log(Level l, String msg, Throwable t, Object... paras) {
mytownLogger.log(l, consoleColors(String.format("§7[§a%s§7]%s", ForgePerms.MOD_NAME, String.format(msg, paras))), t);
}
public static void direct(String msg) {
mytownLogger.log(Level.INFO, consoleColors(msg));
}
public static String consoleColors(String str) {
if (str == null || str.equals("")) {
return "";
}
Matcher m = color_pattern.matcher(str);
String s = str;
while (m.find()) {
String color = m.group(1).toLowerCase();
s = m.replaceFirst(replaceColor(color.charAt(0)));
m = m.reset(s);
}
return s + replaceColor('r');
}
private static String replaceColor(char color) {
if (!isUnix) {
return "";
}
if (color == 'r') {
return "\033[0m";
} else if (color < '0' || color > 'f' || color > '9' && color < 'a') {
return "";
}
int c = color - (color >= 'a' ? 'a' - 10 : '0');
boolean bold = c > 7;
c = c % 8;
if (c == 1) {
c = 4;
} else if (c == 3) {
c = 6;
} else if (c == 4) {
c = 1;
} else if (c == 6) {
c = 3;
}
return String.format("\033[%s;%sm", c + 30, bold ? 1 : 22);
}
public static boolean isUnix() {
String OS = System.getProperty("os.name").toLowerCase();
return OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0;
}
}