]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/output/template/ForeachStatement.java
Implement a Template-Foreach (and use in "new email certificate")
[gigi.git] / src / org / cacert / gigi / output / template / ForeachStatement.java
diff --git a/src/org/cacert/gigi/output/template/ForeachStatement.java b/src/org/cacert/gigi/output/template/ForeachStatement.java
new file mode 100644 (file)
index 0000000..0b3c526
--- /dev/null
@@ -0,0 +1,30 @@
+package org.cacert.gigi.output.template;
+
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.cacert.gigi.Language;
+import org.cacert.gigi.output.Outputable;
+
+final class ForeachStatement implements Outputable {
+       private final String variable;
+       private final TemplateBlock body;
+
+       ForeachStatement(String variable, TemplateBlock body) {
+               this.variable = variable;
+               this.body = body;
+       }
+
+       @Override
+       public void output(PrintWriter out, Language l, Map<String, Object> vars) {
+               Object o = vars.get(variable);
+               if (o instanceof IterableDataset) {
+                       IterableDataset id = (IterableDataset) o;
+                       Map<String, Object> subcontext = new HashMap<String, Object>(vars);
+                       while (id.next(subcontext)) {
+                               body.output(out, l, subcontext);
+                       }
+               }
+       }
+}
\ No newline at end of file