From ffab4ac1fae1a58919c7dde59d90c75df096512c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Sat, 12 Jul 2014 16:05:30 +0200 Subject: [PATCH] Split of inner anonymous classes of "Template" --- .../gigi/output/template/IfStatement.java | 25 ++++++++ .../template/OutputVariableCommand.java | 20 ++++++ .../gigi/output/template/SprintfCommand.java | 29 +++++++++ .../cacert/gigi/output/template/Template.java | 64 ++----------------- .../gigi/output/template/TemplateBlock.java | 28 ++++++++ .../output/template/TranslateCommand.java | 20 ++++++ 6 files changed, 127 insertions(+), 59 deletions(-) create mode 100644 src/org/cacert/gigi/output/template/IfStatement.java create mode 100644 src/org/cacert/gigi/output/template/OutputVariableCommand.java create mode 100644 src/org/cacert/gigi/output/template/SprintfCommand.java create mode 100644 src/org/cacert/gigi/output/template/TemplateBlock.java create mode 100644 src/org/cacert/gigi/output/template/TranslateCommand.java diff --git a/src/org/cacert/gigi/output/template/IfStatement.java b/src/org/cacert/gigi/output/template/IfStatement.java new file mode 100644 index 00000000..02687630 --- /dev/null +++ b/src/org/cacert/gigi/output/template/IfStatement.java @@ -0,0 +1,25 @@ +package org.cacert.gigi.output.template; + +import java.io.PrintWriter; +import java.util.Map; + +import org.cacert.gigi.Language; +import org.cacert.gigi.output.Outputable; + +final class IfStatement implements Outputable { + private final String variable; + private final TemplateBlock body; + + IfStatement(String variable, TemplateBlock body) { + this.variable = variable; + this.body = body; + } + + @Override + public void output(PrintWriter out, Language l, Map vars) { + Object o = vars.get(variable); + if (o instanceof Boolean && o == Boolean.TRUE) { + body.output(out, l, vars); + } + } +} \ No newline at end of file diff --git a/src/org/cacert/gigi/output/template/OutputVariableCommand.java b/src/org/cacert/gigi/output/template/OutputVariableCommand.java new file mode 100644 index 00000000..900b557d --- /dev/null +++ b/src/org/cacert/gigi/output/template/OutputVariableCommand.java @@ -0,0 +1,20 @@ +package org.cacert.gigi.output.template; + +import java.io.PrintWriter; +import java.util.Map; + +import org.cacert.gigi.Language; +import org.cacert.gigi.output.Outputable; + +final class OutputVariableCommand implements Outputable { + private final String raw; + + OutputVariableCommand(String raw) { + this.raw = raw; + } + + @Override + public void output(PrintWriter out, Language l, Map vars) { + Template.outputVar(out, l, vars, raw); + } +} \ No newline at end of file diff --git a/src/org/cacert/gigi/output/template/SprintfCommand.java b/src/org/cacert/gigi/output/template/SprintfCommand.java new file mode 100644 index 00000000..24608d2e --- /dev/null +++ b/src/org/cacert/gigi/output/template/SprintfCommand.java @@ -0,0 +1,29 @@ +package org.cacert.gigi.output.template; + +import java.io.PrintWriter; +import java.util.LinkedList; +import java.util.Map; + +import org.cacert.gigi.Language; +import org.cacert.gigi.output.Outputable; + +final class SprintfCommand implements Outputable { + private final String text; + private final LinkedList store; + + SprintfCommand(String text, LinkedList store) { + this.text = text; + this.store = store; + } + + @Override + public void output(PrintWriter out, Language l, Map vars) { + String[] parts = l.getTranslation(text).split("%s"); + String[] myvars = store.toArray(new String[store.size()]); + out.print(parts[0]); + for (int j = 1; j < parts.length; j++) { + Template.outputVar(out, l, vars, myvars[j - 1].substring(1)); + out.print(parts[j]); + } + } +} \ No newline at end of file diff --git a/src/org/cacert/gigi/output/template/Template.java b/src/org/cacert/gigi/output/template/Template.java index 57cbd6f2..bfff646f 100644 --- a/src/org/cacert/gigi/output/template/Template.java +++ b/src/org/cacert/gigi/output/template/Template.java @@ -19,27 +19,6 @@ import org.cacert.gigi.Language; import org.cacert.gigi.output.Outputable; public class Template implements Outputable { - static class TemplateBlock implements Outputable { - String[] contents; - Outputable[] vars; - - public TemplateBlock(String[] contents, Outputable[] vars) { - this.contents = contents; - this.vars = vars; - } - - @Override - public void output(PrintWriter out, Language l, Map vars) { - for (int i = 0; i < contents.length; i++) { - out.print(contents[i]); - if (i < this.vars.length) { - this.vars[i].output(out, l, vars); - } - } - } - - } - TemplateBlock data; long lastLoaded; @@ -104,16 +83,7 @@ public class Template implements Outputable { if (m.matches()) { final String variable = m.group(1); final TemplateBlock body = parse(r); - commands.add(new Outputable() { - - @Override - public void output(PrintWriter out, Language l, Map vars) { - Object o = vars.get(variable); - if (o instanceof Boolean && o == Boolean.TRUE) { - body.output(out, l, vars); - } - } - }); + commands.add(new IfStatement(variable, body)); continue; } if (com.matches(" ?\\} ?")) { @@ -135,22 +105,10 @@ public class Template implements Outputable { private Outputable parseCommand(String s2) { if (s2.startsWith("=_")) { final String raw = s2.substring(2); - return new Outputable() { - - @Override - public void output(PrintWriter out, Language l, Map vars) { - out.print(l.getTranslation(raw)); - } - }; + return new TranslateCommand(raw); } else if (s2.startsWith("=$")) { final String raw = s2.substring(2); - return new Outputable() { - - @Override - public void output(PrintWriter out, Language l, Map vars) { - outputVar(out, l, vars, raw); - } - }; + return new OutputVariableCommand(raw); } else if (s2.startsWith("=s,")) { String command = s2.substring(3); final LinkedList store = new LinkedList(); @@ -160,19 +118,7 @@ public class Template implements Outputable { command = command.substring(idx + 1); } final String text = command; - return new Outputable() { - - @Override - public void output(PrintWriter out, Language l, Map vars) { - String[] parts = l.getTranslation(text).split("%s"); - String[] myvars = store.toArray(new String[store.size()]); - out.print(parts[0]); - for (int j = 1; j < parts.length; j++) { - outputVar(out, l, vars, myvars[j - 1].substring(1)); - out.print(parts[j]); - } - } - }; + return new SprintfCommand(text, store); } else { System.out.println("Unknown processing instruction: " + s2); } @@ -196,7 +142,7 @@ public class Template implements Outputable { data.output(out, l, vars); } - private void outputVar(PrintWriter out, Language l, Map vars, String varname) { + protected static void outputVar(PrintWriter out, Language l, Map vars, String varname) { Object s = vars.get(varname); if (s == null) { diff --git a/src/org/cacert/gigi/output/template/TemplateBlock.java b/src/org/cacert/gigi/output/template/TemplateBlock.java new file mode 100644 index 00000000..8f715773 --- /dev/null +++ b/src/org/cacert/gigi/output/template/TemplateBlock.java @@ -0,0 +1,28 @@ +package org.cacert.gigi.output.template; + +import java.io.PrintWriter; +import java.util.Map; + +import org.cacert.gigi.Language; +import org.cacert.gigi.output.Outputable; + +class TemplateBlock implements Outputable { + String[] contents; + Outputable[] vars; + + public TemplateBlock(String[] contents, Outputable[] vars) { + this.contents = contents; + this.vars = vars; + } + + @Override + public void output(PrintWriter out, Language l, Map vars) { + for (int i = 0; i < contents.length; i++) { + out.print(contents[i]); + if (i < this.vars.length) { + this.vars[i].output(out, l, vars); + } + } + } + +} \ No newline at end of file diff --git a/src/org/cacert/gigi/output/template/TranslateCommand.java b/src/org/cacert/gigi/output/template/TranslateCommand.java new file mode 100644 index 00000000..fdb35a96 --- /dev/null +++ b/src/org/cacert/gigi/output/template/TranslateCommand.java @@ -0,0 +1,20 @@ +package org.cacert.gigi.output.template; + +import java.io.PrintWriter; +import java.util.Map; + +import org.cacert.gigi.Language; +import org.cacert.gigi.output.Outputable; + +final class TranslateCommand implements Outputable { + private final String raw; + + TranslateCommand(String raw) { + this.raw = raw; + } + + @Override + public void output(PrintWriter out, Language l, Map vars) { + out.print(l.getTranslation(raw)); + } +} \ No newline at end of file -- 2.39.2