]> WPIA git - gigi.git/commitdiff
Split of inner anonymous classes of "Template"
authorFelix Dörre <felix@dogcraft.de>
Sat, 12 Jul 2014 14:05:30 +0000 (16:05 +0200)
committerFelix Dörre <felix@dogcraft.de>
Sat, 12 Jul 2014 14:06:38 +0000 (16:06 +0200)
src/org/cacert/gigi/output/template/IfStatement.java [new file with mode: 0644]
src/org/cacert/gigi/output/template/OutputVariableCommand.java [new file with mode: 0644]
src/org/cacert/gigi/output/template/SprintfCommand.java [new file with mode: 0644]
src/org/cacert/gigi/output/template/Template.java
src/org/cacert/gigi/output/template/TemplateBlock.java [new file with mode: 0644]
src/org/cacert/gigi/output/template/TranslateCommand.java [new file with mode: 0644]

diff --git a/src/org/cacert/gigi/output/template/IfStatement.java b/src/org/cacert/gigi/output/template/IfStatement.java
new file mode 100644 (file)
index 0000000..0268763
--- /dev/null
@@ -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<String, Object> 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 (file)
index 0000000..900b557
--- /dev/null
@@ -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<String, Object> 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 (file)
index 0000000..24608d2
--- /dev/null
@@ -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<String> store;
+
+       SprintfCommand(String text, LinkedList<String> store) {
+               this.text = text;
+               this.store = store;
+       }
+
+       @Override
+       public void output(PrintWriter out, Language l, Map<String, Object> 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
index 57cbd6f2a23439d56849694894760939bfb8871f..bfff646f8fe833164ea30e6129275828045c7b24 100644 (file)
@@ -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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> vars) {
-                                       outputVar(out, l, vars, raw);
-                               }
-                       };
+                       return new OutputVariableCommand(raw);
                } else if (s2.startsWith("=s,")) {
                        String command = s2.substring(3);
                        final LinkedList<String> store = new LinkedList<String>();
@@ -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<String, Object> 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<String, Object> vars, String varname) {
+       protected static void outputVar(PrintWriter out, Language l, Map<String, Object> 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 (file)
index 0000000..8f71577
--- /dev/null
@@ -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<String, Object> 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 (file)
index 0000000..fdb35a9
--- /dev/null
@@ -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<String, Object> vars) {
+               out.print(l.getTranslation(raw));
+       }
+}
\ No newline at end of file