public class TextSubstitution
extends java.lang.Object
"${${a}.${b}:+ ${${a}.${b}}} ${x.name}"
String text = "${${a}.${b}:+ ${${a}.${b}}} ${x.name}";
TextSubstitution sub = new TextSubstitution(text);
Map<String, Object> map = new HashMap<>();
map.put("x", new X());
map.put("a", "x");
map.put("b", "name");
String output = sub.build(map);
${var:default} expands to default if var not defined, to var if var is defined.
${var::default} same as above. The extra ':' is to escape special characters like +, - and =
${var:+default} expands to "" if var is not defined, to default if var is defined.
${var:-default} expands to default if var not defined, to "" if var is defined.
${var:=predicate?match:not-match} expands to match if value of var equals to predicate, else not-match
example: "${key := A ?B:C}"; the spaces after the '?' are important.
${var:^script} executes the script with value of var and returns a string from the execution.
| Modifier and Type | Class and Description |
|---|---|
static class |
TextSubstitution.DefaultScriptable |
static interface |
TextSubstitution.Scriptable |
| Constructor and Description |
|---|
TextSubstitution(java.io.Reader reader) |
TextSubstitution(java.lang.String template) |
| Modifier and Type | Method and Description |
|---|---|
java.lang.String |
build(java.lang.Object binding) |
java.lang.String |
build(java.lang.Object binding,
java.util.Map<java.lang.String,java.lang.Object> auxillary) |
static java.lang.String |
capitalize(java.lang.String name) |
static TextSubstitution.DefaultScriptable |
defaultScriptable() |
java.lang.String |
getTemplate() |
TextSubstitution |
withScriptable(TextSubstitution.Scriptable script) |
public TextSubstitution(java.lang.String template)
public TextSubstitution(java.io.Reader reader)
throws java.io.IOException
java.io.IOExceptionpublic static TextSubstitution.DefaultScriptable defaultScriptable()
public java.lang.String getTemplate()
public TextSubstitution withScriptable(TextSubstitution.Scriptable script)
public java.lang.String build(java.lang.Object binding)
public java.lang.String build(java.lang.Object binding,
java.util.Map<java.lang.String,java.lang.Object> auxillary)
public static java.lang.String capitalize(java.lang.String name)