Skip to content

Commit 5683728

Browse files
committed
feat(StringUtil): implement format placeholders closer to _posix parameter expansion_ - i.e. implement optional colon
1 parent 699d147 commit 5683728

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,11 +156,11 @@ You can configure the version and properties adjustments for specific branches a
156156

157157
ℹ Final `version` will be slugified automatically, so no need to use `${….slug}` placeholders in `<version>` format.
158158

159-
ℹ define placeholder default value (placeholder is not defined) like this `${name:-DEFAULT_VALUE}`<br>
160-
e.g `${env.BUILD_NUMBER:-0}` or `${env.BUILD_NUMBER:-local}`
159+
ℹ define placeholder default value (placeholder is not defined '-' or empty ':-') like this `${name:-DEFAULT_VALUE}`<br>
160+
e.g `${env.BUILD_NUMBER-0}` or `${env.BUILD_NUMBER:-local}`
161161

162-
ℹ define placeholder overwrite value (placeholder is defined) like this `${name:+OVERWRITE_VALUE}`<br>
163-
e.g `${dirty:-SNAPSHOT}` resolves to `-SNAPSHOT` instead of `-DIRTY`
162+
ℹ define placeholder overwrite value (placeholder is defined '+' and non-empty ':+' ) like this `${name:+OVERWRITE_VALUE}`<br>
163+
e.g `${dirty:+SNAPSHOT}` resolves to `-SNAPSHOT` instead of `-DIRTY`
164164

165165
###### Placeholders
166166

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public final class StringUtil {
1212

1313
public static String substituteText(String text, Map<String, Supplier<String>> replacements) {
1414
StringBuffer result = new StringBuffer();
15-
Pattern placeholderPattern = Pattern.compile("\\$\\{(?<key>[^}:]+)(?::(?<modifier>[-+])(?<value>[^}]*))?}");
15+
Pattern placeholderPattern = Pattern.compile("\\$\\{(?<key>[^}:]+)(?<modifier>:?[-+])?(?<value>[^}]*)?}");
1616
Matcher placeholderMatcher = placeholderPattern.matcher(text);
1717
while (placeholderMatcher.find()) {
1818
String placeholderKey = placeholderMatcher.group("key");
@@ -26,6 +26,12 @@ public static String substituteText(String text, Map<String, Supplier<String>> r
2626
if (placeholderModifier.equals("+") && replacement != null) {
2727
replacement = placeholderMatcher.group("value");
2828
}
29+
if (placeholderModifier.equals(":-") && (replacement == null || replacement.isEmpty())) {
30+
replacement = placeholderMatcher.group("value");
31+
}
32+
if (placeholderModifier.equals(":+") && replacement != null && !replacement.isEmpty()) {
33+
replacement = placeholderMatcher.group("value");
34+
}
2935
}
3036
if (replacement != null) {
3137
// avoid group name replacement behaviour of replacement parameter value

0 commit comments

Comments
 (0)