Skip to content

Commit

Permalink
Fix Checkstyle validation
Browse files Browse the repository at this point in the history
  • Loading branch information
timdp committed Sep 10, 2024
1 parent f98c02f commit 9c2da48
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
14 changes: 13 additions & 1 deletion src/main/java/org/apache/commons/text/StringEscapeUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@
import org.apache.commons.text.translate.CharSequenceTranslator;
import org.apache.commons.text.translate.CsvTranslators;
import org.apache.commons.text.translate.EntityArrays;
import org.apache.commons.text.translate.HexUnescaper;
import org.apache.commons.text.translate.JavaUnicodeEscaper;
import org.apache.commons.text.translate.LookupTranslator;
import org.apache.commons.text.translate.NumericEntityEscaper;
import org.apache.commons.text.translate.NumericEntityUnescaper;
import org.apache.commons.text.translate.OctalUnescaper;
import org.apache.commons.text.translate.HexUnescaper;
import org.apache.commons.text.translate.UnicodeUnescaper;
import org.apache.commons.text.translate.UnicodeUnpairedSurrogateRemover;

Expand Down Expand Up @@ -375,12 +375,24 @@ public int translate(final CharSequence input, final int index, final Writer wri
);
}

/**
* Translator for octal escapes.
*/
private static final CharSequenceTranslator OCTAL_JAVA_TRANSLATOR = new OctalUnescaper();

/**
* Translator for Unicode escapes.
*/
private static final CharSequenceTranslator UNICODE_JAVA_TRANSLATOR = new UnicodeUnescaper();

/**
* Translator for Java control characters.
*/
private static final CharSequenceTranslator CTRL_CHARS_JAVA_TRANSLATOR = new LookupTranslator(EntityArrays.JAVA_CTRL_CHARS_UNESCAPE);

/**
* Translator for Java escapes that aren't control characters.
*/
private static final CharSequenceTranslator UNESCAPE_JAVA_TRANSLATOR;

static {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,20 @@ public class HexUnescaper extends CharSequenceTranslator {
*/
@Override
public int translate(final CharSequence input, final int index, final Writer writer) throws IOException {
final int prefixLength = 2; // "\\x".length()
final int escapeLength = 4; // "\\xHH".length()
if (input.charAt(index) == '\\' && index + 1 < input.length() && input.charAt(index + 1) == 'x') {
if (index + 4 <= input.length()) {
if (index + escapeLength <= input.length()) {
// Get 2 hex digits
final CharSequence hex = input.subSequence(index + 2, index + 4);
final CharSequence hex = input.subSequence(index + prefixLength, index + escapeLength);

try {
final int value = Integer.parseInt(hex.toString(), 16);
writer.write((char) value);
} catch (final NumberFormatException nfe) {
throw new IllegalArgumentException("Unable to parse ASCII value: " + hex, nfe);
}
return 4;
return escapeLength;
}
throw new IllegalArgumentException("Less than 2 hex digits in ASCII value: '"
+ input.subSequence(index, input.length())
Expand Down

0 comments on commit 9c2da48

Please sign in to comment.