Skip to content

Commit ca25c71

Browse files
committed
fix: add index groups to patternGroups function result
1 parent cf59030 commit ca25c71

File tree

1 file changed

+31
-10
lines changed

1 file changed

+31
-10
lines changed

src/main/java/me/qoomon/gitversioning/commons/StringUtil.java

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,30 +52,51 @@ public static Map<String, String> patternGroupValues(String text, String regex)
5252
*/
5353
public static Map<String, String> patternGroupValues(Pattern pattern, String text) {
5454
Map<String, String> result = new HashMap<>();
55+
5556
Matcher groupMatcher = pattern.matcher(text);
5657
if (groupMatcher.find()) {
57-
// add group index to value entries
58+
// group index values
5859
for (int i = 1; i <= groupMatcher.groupCount(); i++) {
5960
result.put(String.valueOf(i), groupMatcher.group(i));
6061
}
61-
62-
for (String groupName : patternGroups(pattern)) {
62+
// group name values
63+
for (String groupName : patternGroupNames(pattern)) {
6364
result.put(groupName, groupMatcher.group(groupName));
6465
}
6566
}
67+
6668
return result;
6769
}
6870

69-
public static Set<String> patternGroups(Pattern groupPattern) {
70-
Set<String> groupNames = new HashSet<>();
71-
Pattern groupNamePattern = Pattern.compile("\\(\\?<(?<name>[a-zA-Z][a-zA-Z0-9]*)>");
72-
Matcher groupNameMatcher = groupNamePattern.matcher(groupPattern.toString());
71+
public static Set<String> patternGroups(Pattern pattern) {
72+
Set<String> groups = new HashSet<>();
73+
74+
// group indexes
75+
for (int groupIndex = 1; groupIndex <= patternGroupCount(pattern); groupIndex++) {
76+
groups.add(String.valueOf(groupIndex));
77+
}
78+
// group names
79+
groups.addAll(patternGroupNames(pattern));
80+
81+
return groups;
82+
}
83+
84+
public static int patternGroupCount(Pattern pattern) {
85+
return pattern.matcher("").groupCount();
86+
}
87+
88+
public static Set<String> patternGroupNames(Pattern pattern) {
89+
Set<String> groups = new HashSet<>();
7390

74-
// add group name to value Entries
91+
// group names
92+
Pattern groupNamePattern = Pattern.compile("\\(\\?<(?<name>[a-zA-Z][a-zA-Z0-9]*)>");
93+
Matcher groupNameMatcher = groupNamePattern.matcher(pattern.toString());
7594
while (groupNameMatcher.find()) {
7695
String groupName = groupNameMatcher.group("name");
77-
groupNames.add(groupName);
96+
groups.add(groupName);
7897
}
79-
return groupNames;
98+
99+
return groups;
80100
}
101+
81102
}

0 commit comments

Comments
 (0)