2026-03-17 13:31:18 -07:00

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() {
}
}
}