From 05b0b6cb6ae129f601cb91bebf21731d43ac79f764f8acbd1a0889aad3603797 Mon Sep 17 00:00:00 2001 From: Minimons Date: Sat, 27 Jun 2026 19:57:02 +0200 Subject: [PATCH] 20: Add AlarmVariableResolver class --- .../impl/ref/AlarmVariableResolver.tjava | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/AlarmVariableResolver.tjava 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