package com.tddinaction.template; import java.util.HashMap; import java.util.List; import java.util.Map; public class Template { private Map<String, String> variables; private String templateText; public Template(String templateText) { this.variables = new HashMap<String, String>(); this.templateText = templateText; } public void set(String name, String value) { this.variables.put(name, value); } public String evaluate() { TemplateParse p = new TemplateParse(); List<Segment> segments = p.parseSegments(templateText); return concatenate(segments); } private String concatenate(List<Segment> segments) { StringBuffer result = new StringBuffer(); for (Segment segment : segments) { result.append(segment.evaluate(variables)); } return result.toString(); } }