Add reparse filter
[Sone.git] / src / main / java / net / pterodactylus / sone / main / ReparseFilter.java
diff --git a/src/main/java/net/pterodactylus/sone/main/ReparseFilter.java b/src/main/java/net/pterodactylus/sone/main/ReparseFilter.java
new file mode 100644 (file)
index 0000000..acad00b
--- /dev/null
@@ -0,0 +1,33 @@
+package net.pterodactylus.sone.main;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.Map;
+
+import net.pterodactylus.util.template.Filter;
+import net.pterodactylus.util.template.Template;
+import net.pterodactylus.util.template.TemplateContext;
+import net.pterodactylus.util.template.TemplateException;
+import net.pterodactylus.util.template.TemplateParser;
+
+/**
+ * Takes the input and parses it as a new {@link Template}.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class ReparseFilter implements Filter {
+
+       @Override
+       public Object format(TemplateContext templateContext, Object data, Map<String, Object> parameters) {
+               Template template = TemplateParser.parse(new StringReader(String.valueOf(data)));
+               StringWriter stringWriter = new StringWriter();
+               try {
+                       template.render(templateContext, stringWriter);
+               } catch (TemplateException e) {
+                       throw new RuntimeException(e);
+               } finally {
+                       return stringWriter.toString();
+               }
+       }
+
+}