X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Foutput%2Ftemplate%2FIfStatement.java;h=1b49f3b28f0ae1dad5dfe8526cbd5e347cd9b9e6;hb=13c4d02b2101b4239a7fc47b92befff58ff101f1;hp=bed559ed41a2ad0144440155eac444d7225afba0;hpb=943d8e7ed0ea5a9d56e7e694a3cbd849c52bad16;p=gigi.git diff --git a/src/org/cacert/gigi/output/template/IfStatement.java b/src/org/cacert/gigi/output/template/IfStatement.java index bed559ed..1b49f3b2 100644 --- a/src/org/cacert/gigi/output/template/IfStatement.java +++ b/src/org/cacert/gigi/output/template/IfStatement.java @@ -1,27 +1,70 @@ package org.cacert.gigi.output.template; import java.io.PrintWriter; +import java.util.Collection; import java.util.Map; -import org.cacert.gigi.Language; -import org.cacert.gigi.output.Outputable; +import org.cacert.gigi.localisation.Language; -public final class IfStatement implements Outputable { +/** + * One ore two {@link Outputable}s that are emitted conditionally if a given + * variable is neither null nor {@link Boolean#FALSE}. + */ +public final class IfStatement implements Translatable { private final String variable; - private final TemplateBlock body; + private final TemplateBlock iftrue; + private final TemplateBlock iffalse; + + /** + * Creates a new {@link IfStatement} with an empty else-part. + * + * @param variable + * the variable to check. + * @param body + * the body to emit conditionally. + */ public IfStatement(String variable, TemplateBlock body) { this.variable = variable; - this.body = body; + this.iftrue = body; + this.iffalse = null; + } + + /** + * Creates a new {@link IfStatement} with an else-block. + * + * @param variable + * the variable to check. + * @param iftrue + * the block to emit if the check succeeds. + * @param iffalse + * the block to emit if the check fails. + */ + public IfStatement(String variable, TemplateBlock iftrue, TemplateBlock iffalse) { + this.variable = variable; + this.iftrue = iftrue; + this.iffalse = iffalse; } @Override public void output(PrintWriter out, Language l, Map vars) { Object o = vars.get(variable); - if ( !(o == Boolean.FALSE || o == null)) { - body.output(out, l, vars); + + if ( !(o == null || Boolean.FALSE.equals(o))) { + iftrue.output(out, l, vars); + } else if (iffalse != null) { + iffalse.output(out, l, vars); } } + + @Override + public void addTranslations(Collection s) { + iftrue.addTranslations(s); + if (iffalse != null) { + iffalse.addTranslations(s); + } + } + }