From e6ea6f8f9af7b4b24c58626f8749cfda3dcb2240 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Thu, 26 Jun 2014 10:54:01 +0200 Subject: [PATCH] Impement sprintf for templates --- src/org/cacert/gigi/output/Template.java | 36 ++++++++++++++++++------ 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/org/cacert/gigi/output/Template.java b/src/org/cacert/gigi/output/Template.java index 266761a8..5498ab0e 100644 --- a/src/org/cacert/gigi/output/Template.java +++ b/src/org/cacert/gigi/output/Template.java @@ -36,21 +36,28 @@ public class Template implements Outputable { contents = splitted.toArray(new String[splitted.size()]); } public void output(PrintWriter out, Language l, Map vars) { + LinkedList store = new LinkedList(); for (int i = 0; i < contents.length; i++) { if (i % 2 == 0) { out.print(contents[i]); } else if (contents[i].startsWith("=_")) { out.print(l.getTranslation(contents[i].substring(2))); } else if (contents[i].startsWith("=$")) { - Object s = vars.get(contents[i].substring(2)); - if (s == null) { - System.out.println("Empty variable: " - + contents[i].substring(2)); + outputVar(out, l, vars, contents[i].substring(2)); + } else if (contents[i].startsWith("=s,")) { + String command = contents[i].substring(3); + store.clear(); + while (command.startsWith("$")) { + int idx = command.indexOf(","); + store.add(command.substring(0, idx)); + command = command.substring(idx + 1); } - if (s instanceof Outputable) { - ((Outputable) s).output(out, l, vars); - } else { - out.print(s); + String[] parts = l.getTranslation(command).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]); } } else { System.out.println("Unknown processing instruction: " @@ -58,4 +65,17 @@ public class Template implements Outputable { } } } + private void outputVar(PrintWriter out, Language l, + Map vars, String varname) { + Object s = vars.get(varname); + + if (s == null) { + System.out.println("Empty variable: " + varname); + } + if (s instanceof Outputable) { + ((Outputable) s).output(out, l, vars); + } else { + out.print(s); + } + } } -- 2.39.2