From 24cee7c12fa9d124db5019e69ffb28fd95e6b0c8 Mon Sep 17 00:00:00 2001 From: Peter Kriens Date: Mon, 15 Jan 2024 15:30:15 +0100 Subject: [PATCH] Correct handling of group names --- Signed-off-by: Peter Kriens Signed-off-by: Peter Kriens --- aQute.libg/src/aQute/libg/re/Catalog.java | 3 ++- .../aQute/libg/re/BasicFunctionalityUnitTest.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/aQute.libg/src/aQute/libg/re/Catalog.java b/aQute.libg/src/aQute/libg/re/Catalog.java index ec9ba56a44..07c79400a1 100644 --- a/aQute.libg/src/aQute/libg/re/Catalog.java +++ b/aQute.libg/src/aQute/libg/re/Catalog.java @@ -125,7 +125,7 @@ public static RE or(RE... res) { .append(re); del = "|"; } - yield new Group(Group.Type.NONCAPTURING, sb.toString()); + yield new Group(null, sb.toString(), Group.Type.NONCAPTURING, names(res)); } }; } @@ -910,6 +910,7 @@ public static RE string(char delimeter) { final public static C tab = new Special("\t"); final public static RE number = some(digit); public static C hexdigit = cc("0-9A-F"); + public static C bindigit = cc("0-1"); public static RE hexnumber = some(hexdigit); final public static C minus = new CharacterClass("-"); final public static C dquote = new CharacterClass("\""); diff --git a/aQute.libg/test/aQute/libg/re/BasicFunctionalityUnitTest.java b/aQute.libg/test/aQute/libg/re/BasicFunctionalityUnitTest.java index 12d51dc75b..e036f058f3 100644 --- a/aQute.libg/test/aQute/libg/re/BasicFunctionalityUnitTest.java +++ b/aQute.libg/test/aQute/libg/re/BasicFunctionalityUnitTest.java @@ -5,6 +5,7 @@ import static aQute.libg.re.Catalog.g; import static aQute.libg.re.Catalog.lit; import static aQute.libg.re.Catalog.maybe; +import static aQute.libg.re.Catalog.or; import static aQute.libg.re.Catalog.someAll; import static aQute.libg.re.Catalog.unicodeCase; import static org.assertj.core.api.Assertions.assertThat; @@ -15,6 +16,17 @@ public class BasicFunctionalityUnitTest { + + @Test + public void testGroupNames() { + RE a = g("A", lit("a")); + RE b = g("B", lit("b")); + RE c = g("C", lit("c")); + RE re = g("top", or(a, b, c)); + + assertThat(re.getGroupNames()).contains("A", "B", "C", "top"); + } + @Test public void testSomething() { assertThat(someAll.matches(null)).isNotPresent();