resolve method

String resolve(
  1. String text
)

Replaces every {{ … }} token in text. A bare variable name ({{ coupon }}, {{ user.age }}) is a direct lookup; anything else is evaluated as an arithmetic expression over the scope's number-typed variables (collapsing to "" on any error).

Implementation

String resolve(String text) {
  if (!text.contains('{{')) return text;
  final values = {
    for (final e in variables.entries) e.key: e.value?.toString() ?? ''
  };
  return text.replaceAllMapped(_placeholderPattern, (m) {
    final inner = m.group(1)!.trim();
    if (_namePattern.hasMatch(inner)) {
      return values[inner] ?? '';
    }
    return evaluateArithmetic(inner, values, types) ?? '';
  });
}