77 lines
2.5 KiB
Java
77 lines
2.5 KiB
Java
|
package com.google.common.escape;
|
||
|
|
||
|
import com.google.common.base.Preconditions;
|
||
|
|
||
|
/* loaded from: classes2.dex */
|
||
|
public abstract class CharEscaper extends Escaper {
|
||
|
private static final int DEST_PAD_MULTIPLIER = 2;
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public abstract char[] escape(char c);
|
||
|
|
||
|
@Override // com.google.common.escape.Escaper
|
||
|
public String escape(String str) {
|
||
|
Preconditions.checkNotNull(str);
|
||
|
int length = str.length();
|
||
|
for (int i = 0; i < length; i++) {
|
||
|
if (escape(str.charAt(i)) != null) {
|
||
|
return escapeSlow(str, i);
|
||
|
}
|
||
|
}
|
||
|
return str;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public final String escapeSlow(String str, int i) {
|
||
|
int length = str.length();
|
||
|
char[] charBufferFromThreadLocal = Platform.charBufferFromThreadLocal();
|
||
|
int length2 = charBufferFromThreadLocal.length;
|
||
|
int i2 = 0;
|
||
|
int i3 = 0;
|
||
|
while (i < length) {
|
||
|
char[] escape = escape(str.charAt(i));
|
||
|
if (escape != null) {
|
||
|
int length3 = escape.length;
|
||
|
int i4 = i - i2;
|
||
|
int i5 = i3 + i4;
|
||
|
int i6 = i5 + length3;
|
||
|
if (length2 < i6) {
|
||
|
length2 = ((length - i) << 1) + i6;
|
||
|
charBufferFromThreadLocal = growBuffer(charBufferFromThreadLocal, i3, length2);
|
||
|
}
|
||
|
if (i4 > 0) {
|
||
|
str.getChars(i2, i, charBufferFromThreadLocal, i3);
|
||
|
i3 = i5;
|
||
|
}
|
||
|
if (length3 > 0) {
|
||
|
System.arraycopy(escape, 0, charBufferFromThreadLocal, i3, length3);
|
||
|
i3 += length3;
|
||
|
}
|
||
|
i2 = i + 1;
|
||
|
}
|
||
|
i++;
|
||
|
}
|
||
|
int i7 = length - i2;
|
||
|
if (i7 > 0) {
|
||
|
int i8 = i7 + i3;
|
||
|
if (length2 < i8) {
|
||
|
charBufferFromThreadLocal = growBuffer(charBufferFromThreadLocal, i3, i8);
|
||
|
}
|
||
|
str.getChars(i2, length, charBufferFromThreadLocal, i3);
|
||
|
i3 = i8;
|
||
|
}
|
||
|
return new String(charBufferFromThreadLocal, 0, i3);
|
||
|
}
|
||
|
|
||
|
private static char[] growBuffer(char[] cArr, int i, int i2) {
|
||
|
if (i2 < 0) {
|
||
|
throw new AssertionError("Cannot increase internal buffer any further");
|
||
|
}
|
||
|
char[] cArr2 = new char[i2];
|
||
|
if (i > 0) {
|
||
|
System.arraycopy(cArr, 0, cArr2, 0, i);
|
||
|
}
|
||
|
return cArr2;
|
||
|
}
|
||
|
}
|