This is an automated email from the ASF dual-hosted git repository.
garydgregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git
The following commit(s) were added to refs/heads/master by this push:
new 80bf07c61 fix lookup translator code point count for supplementary
keys (#1691)
80bf07c61 is described below
commit 80bf07c61721520ef12679fc394ac5584c1e9536
Author: alhuda <[email protected]>
AuthorDate: Sun Jun 7 16:58:24 2026 +0530
fix lookup translator code point count for supplementary keys (#1691)
Co-authored-by: alhudz <[email protected]>
---
.../commons/lang3/text/translate/LookupTranslator.java | 2 +-
.../commons/lang3/text/translate/LookupTranslatorTest.java | 12 ++++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git
a/src/main/java/org/apache/commons/lang3/text/translate/LookupTranslator.java
b/src/main/java/org/apache/commons/lang3/text/translate/LookupTranslator.java
index d0a102ab5..9fbae7f96 100644
---
a/src/main/java/org/apache/commons/lang3/text/translate/LookupTranslator.java
+++
b/src/main/java/org/apache/commons/lang3/text/translate/LookupTranslator.java
@@ -86,7 +86,7 @@ public int translate(final CharSequence input, final int
index, final Writer out
if (result != null) {
out.write(result);
- return i;
+ return Character.codePointCount(input, index, index + i);
}
}
}
diff --git
a/src/test/java/org/apache/commons/lang3/text/translate/LookupTranslatorTest.java
b/src/test/java/org/apache/commons/lang3/text/translate/LookupTranslatorTest.java
index e91bda606..7de159735 100644
---
a/src/test/java/org/apache/commons/lang3/text/translate/LookupTranslatorTest.java
+++
b/src/test/java/org/apache/commons/lang3/text/translate/LookupTranslatorTest.java
@@ -50,4 +50,16 @@ void testLang882() throws IOException {
assertEquals("two", out.toString(), "Incorrect value");
}
+ @Test
+ void testSupplementaryKey() throws IOException {
+ final String key = new String(Character.toChars(0x1D54F)); // a single
supplementary code point
+ final LookupTranslator lt = new LookupTranslator(new CharSequence[][]
{ { key, "X" } });
+ final StringWriter out = new StringWriter();
+ final int result = lt.translate(key, 0, out);
+ assertEquals(1, result, "Incorrect code point consumption");
+ assertEquals("X", out.toString(), "Incorrect value");
+ // the matched key must not over-consume the following character
+ assertEquals("XY", lt.translate(key + "Y"), "Trailing character must
be preserved");
+ }
+
}