261 lines
7.3 KiB
Java
261 lines
7.3 KiB
Java
/*
|
|
* Decompiled with CFR 0.152.
|
|
*
|
|
* Could not load the following classes:
|
|
* javax.baja.nre.util.TextUtil
|
|
*/
|
|
package com.tridium.util;
|
|
|
|
import javax.baja.nre.util.TextUtil;
|
|
|
|
public abstract class EscUtil {
|
|
public static final EscUtil slot = new SlotEsc();
|
|
public static final EscUtil ord = new OrdEsc();
|
|
private static final int CM_LENGTH = 128;
|
|
private static final int CM_HEX = 1;
|
|
private static final int CM_START = 2;
|
|
private static final int CM_PART = 4;
|
|
private static final int CM_ORD = 8;
|
|
private static byte[] charMap = new byte[128];
|
|
|
|
/*
|
|
* Unable to fully structure code
|
|
*/
|
|
public boolean isValid(String var1_1) {
|
|
var2_2 = var1_1.length();
|
|
if (var2_2 == 0) {
|
|
return false;
|
|
}
|
|
var3_4 = 0;
|
|
while (var3_4 < var2_2) {
|
|
var4_5 = var1_1.charAt(var3_4);
|
|
if (var3_4 != 0 ? this.isPart(var4_5) != false : this.isStart(var4_5) != false) ** GOTO lbl18
|
|
if (var4_5 != '$') {
|
|
return false;
|
|
}
|
|
if ((var5_6 = var1_1.charAt(++var3_4)) == 'u') ** GOTO lbl16
|
|
if ((EscUtil.charMap[var5_6] & 1) == 0 || (EscUtil.charMap[var1_1.charAt(++var3_4)] & 1) == 0) {
|
|
return false;
|
|
}
|
|
try {
|
|
block8: {
|
|
break block8;
|
|
lbl16:
|
|
// 1 sources
|
|
|
|
if ((EscUtil.charMap[var1_1.charAt(++var3_4)] & 1) == 0 || (EscUtil.charMap[var1_1.charAt(++var3_4)] & 1) == 0 || (EscUtil.charMap[var1_1.charAt(++var3_4)] & 1) == 0 || (EscUtil.charMap[var1_1.charAt(++var3_4)] & 1) == 0) {
|
|
return false;
|
|
}
|
|
}
|
|
++var3_4;
|
|
}
|
|
catch (IndexOutOfBoundsException var2_3) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public String escape(String string) {
|
|
int n = string.length();
|
|
if (n == 0) {
|
|
return string;
|
|
}
|
|
char[] cArray = null;
|
|
int n2 = 0;
|
|
int n3 = n * 6;
|
|
char c = string.charAt(0);
|
|
if (!this.isStart(c)) {
|
|
cArray = new char[n3];
|
|
n2 = EscUtil.escape(c, cArray, n2);
|
|
}
|
|
int n4 = 1;
|
|
while (n4 < n) {
|
|
c = string.charAt(n4);
|
|
if (this.isPart(c)) {
|
|
if (cArray != null) {
|
|
cArray[n2++] = c;
|
|
}
|
|
} else {
|
|
if (cArray == null) {
|
|
cArray = new char[n * 6];
|
|
string.getChars(0, n4, cArray, 0);
|
|
n2 = n4;
|
|
}
|
|
n2 = EscUtil.escape(c, cArray, n2);
|
|
}
|
|
++n4;
|
|
}
|
|
if (cArray == null) {
|
|
return string;
|
|
}
|
|
return new String(cArray, 0, n2);
|
|
}
|
|
|
|
public String unescape(String string) {
|
|
char[] cArray = null;
|
|
int n = 0;
|
|
int n2 = string.length();
|
|
int n3 = 0;
|
|
while (n3 < n2) {
|
|
char c = string.charAt(n3);
|
|
if (c != '$') {
|
|
if (cArray != null) {
|
|
cArray[n++] = c;
|
|
}
|
|
} else {
|
|
char c2;
|
|
if (cArray == null) {
|
|
cArray = new char[n2];
|
|
string.getChars(0, n3, cArray, 0);
|
|
n = n3;
|
|
}
|
|
if ((c2 = string.charAt(++n3)) != 'u') {
|
|
cArray[n++] = (char)(TextUtil.hexCharToInt((char)c2) << 4 | TextUtil.hexCharToInt((char)string.charAt(++n3)));
|
|
} else {
|
|
cArray[n++] = (char)(TextUtil.hexCharToInt((char)string.charAt(++n3)) << 12 | TextUtil.hexCharToInt((char)string.charAt(++n3)) << 8 | TextUtil.hexCharToInt((char)string.charAt(++n3)) << 4 | TextUtil.hexCharToInt((char)string.charAt(++n3)));
|
|
}
|
|
}
|
|
++n3;
|
|
}
|
|
if (cArray == null) {
|
|
return string;
|
|
}
|
|
return new String(cArray, 0, n);
|
|
}
|
|
|
|
public abstract boolean isStart(int var1);
|
|
|
|
public abstract boolean isPart(int var1);
|
|
|
|
public static int escape(char c, char[] cArray, int n) {
|
|
String string = Integer.toHexString(c);
|
|
cArray[n++] = 36;
|
|
if (c < '\u0010') {
|
|
cArray[n++] = 48;
|
|
cArray[n++] = string.charAt(0);
|
|
} else if (c < '\u0100') {
|
|
cArray[n++] = string.charAt(0);
|
|
cArray[n++] = string.charAt(1);
|
|
} else if (c < '\u1000') {
|
|
cArray[n++] = 117;
|
|
cArray[n++] = 48;
|
|
cArray[n++] = string.charAt(0);
|
|
cArray[n++] = string.charAt(1);
|
|
cArray[n++] = string.charAt(2);
|
|
} else {
|
|
cArray[n++] = 117;
|
|
cArray[n++] = string.charAt(0);
|
|
cArray[n++] = string.charAt(1);
|
|
cArray[n++] = string.charAt(2);
|
|
cArray[n++] = string.charAt(3);
|
|
}
|
|
return n;
|
|
}
|
|
|
|
public static void main(String[] stringArray) {
|
|
String string = stringArray[0];
|
|
System.out.println("raw: " + string);
|
|
System.out.println("slot: " + slot.escape(string) + " [" + slot.isValid(string) + ']');
|
|
System.out.println("ord: " + ord.escape(string) + " [" + ord.isValid(string) + ']');
|
|
}
|
|
|
|
static /* synthetic */ int access$0() {
|
|
return 128;
|
|
}
|
|
|
|
static /* synthetic */ int access$2() {
|
|
return 2;
|
|
}
|
|
|
|
static /* synthetic */ int access$3() {
|
|
return 4;
|
|
}
|
|
|
|
static /* synthetic */ int access$4() {
|
|
return 8;
|
|
}
|
|
|
|
static {
|
|
int n = 97;
|
|
while (n <= 122) {
|
|
EscUtil.charMap[n] = 6;
|
|
++n;
|
|
}
|
|
n = 65;
|
|
while (n <= 90) {
|
|
EscUtil.charMap[n] = 6;
|
|
++n;
|
|
}
|
|
n = 48;
|
|
while (n <= 57) {
|
|
EscUtil.charMap[n] = 5;
|
|
++n;
|
|
}
|
|
n = 97;
|
|
while (n <= 102) {
|
|
int n2 = n++;
|
|
charMap[n2] = (byte)(charMap[n2] | 1);
|
|
}
|
|
n = 65;
|
|
while (n <= 70) {
|
|
int n3 = n++;
|
|
charMap[n3] = (byte)(charMap[n3] | 1);
|
|
}
|
|
EscUtil.charMap[95] = 4;
|
|
n = 32;
|
|
while (n < 128) {
|
|
if (n != 36 && n != 124) {
|
|
int n4 = n;
|
|
charMap[n4] = (byte)(charMap[n4] | 8);
|
|
}
|
|
++n;
|
|
}
|
|
}
|
|
|
|
static class SlotEsc
|
|
extends EscUtil {
|
|
public boolean isStart(int n) {
|
|
boolean bl = false;
|
|
if (n < 128 && (charMap[n] & 2) != 0) {
|
|
bl = true;
|
|
}
|
|
return bl;
|
|
}
|
|
|
|
public boolean isPart(int n) {
|
|
boolean bl = false;
|
|
if (n < 128 && (charMap[n] & 4) != 0) {
|
|
bl = true;
|
|
}
|
|
return bl;
|
|
}
|
|
|
|
SlotEsc() {
|
|
}
|
|
}
|
|
|
|
static class OrdEsc
|
|
extends EscUtil {
|
|
public boolean isStart(int n) {
|
|
boolean bl = false;
|
|
if (n < 128 && (charMap[n] & 8) != 0) {
|
|
bl = true;
|
|
}
|
|
return bl;
|
|
}
|
|
|
|
public boolean isPart(int n) {
|
|
boolean bl = false;
|
|
if (n < 128 && (charMap[n] & 8) != 0) {
|
|
bl = true;
|
|
}
|
|
return bl;
|
|
}
|
|
|
|
OrdEsc() {
|
|
}
|
|
}
|
|
}
|
|
|