-
Notifications
You must be signed in to change notification settings - Fork 3
/
TemplateBuilder.java
43 lines (33 loc) · 1.14 KB
/
TemplateBuilder.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package fdmc.utils.templatebuilder;
import java.util.Map;
public final class TemplateBuilder {
private static final String TEMPLATE_FORMAT = "{{%s}}";
private final StringBuilder stringBuilder;
private TemplateBuilder(String initialContent) {
stringBuilder = new StringBuilder(initialContent);
}
public static TemplateBuilder from(String initialContent) {
return new TemplateBuilder(initialContent);
}
public TemplateBuilder put(String placeholder, String value) {
String template = String.format(TEMPLATE_FORMAT, placeholder);
int next;
int prev = 0;
while ((next = stringBuilder.indexOf(template, prev)) != -1) {
stringBuilder.replace(next, next + template.length(), value);
prev = next + value.length();
}
return this;
}
public TemplateBuilder put(Map<String, String> pairs) {
pairs.forEach(this::put);
return this;
}
public TemplateBuilder append(String content) {
stringBuilder.append(content);
return this;
}
public String build() {
return stringBuilder.toString();
}
}