diff --git a/src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/AlarmVariableResolver.tjava b/src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/AlarmVariableResolver.tjava new file mode 100644 index 0000000..4d1b153 --- /dev/null +++ b/src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/AlarmVariableResolver.tjava @@ -0,0 +1,29 @@ +package com.r35157.jupiterperpsalarm.impl.ref; + +import java.util.Map; +import java.util.Objects; + +public final class AlarmVariableResolver { + + public AlarmVariableResolver(Map variables) { + this.variables = Objects.requireNonNull(variables, "variables"); + } + + public String resolve(String text) { + Objects.requireNonNull(text, "text"); + + String resolvedText = text; + + for (Map.Entry entry : variables.entrySet()) { + resolvedText = resolvedText.replace(entry.getKey(), entry.getValue()); + } + + if (resolvedText.contains("{{") || resolvedText.contains("}}")) { + throw new IllegalArgumentException("Unresolved variable in text: " + text); + } + + return resolvedText; + } + + private final Map variables; +} \ No newline at end of file