From 939f99ffb79c6df7ed72b1eaf32c2dbd811630c6 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Wed, 25 Mar 2015 14:38:49 +0000 Subject: [PATCH] Conditional template working now --- src/zutil/parser/Templator.java | 57 +++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/src/zutil/parser/Templator.java b/src/zutil/parser/Templator.java index e6e0015..b4aa46a 100644 --- a/src/zutil/parser/Templator.java +++ b/src/zutil/parser/Templator.java @@ -22,11 +22,13 @@ package zutil.parser; +import zutil.log.LogUtil; import zutil.struct.MutableInt; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.logging.Logger; /** * Class for generating dynamic text/code from set data. @@ -44,6 +46,7 @@ import java.util.List; * @author Ziver koc */ public class Templator { + private static final Logger log = LogUtil.getLogger(); private HashMap data; private TemplateEntity tmplRoot; @@ -74,13 +77,11 @@ public class Templator { * Will pare or re-parse the source template. */ private void parseTemplate(String tmpl){ - TemplateNode node = new TemplateNode(); - parseTemplate(node, tmpl, new MutableInt(), null); - tmplRoot = node; + tmplRoot = parseTemplate(new TemplateNode(), tmpl, new MutableInt(), null); } - private void parseTemplate(TemplateNode root, String tmpl, MutableInt m, String parentTag){ + private TemplateNode parseTemplate(TemplateNode root, String tmpl, MutableInt m, String parentTag){ StringBuilder data = new StringBuilder(); - StringBuilder tags = new StringBuilder(); + StringBuilder tag = new StringBuilder(); boolean tagOpen = false; for(; m.i 0) - root.addEntity(new TmplStaticString(data.toString())); + root.add(new TmplStaticString(data.toString())); + + // If we get to this point means that this node is incorrectly close + // or this is the end of the file, so we convert it to a normal node + if(parentTag != null) { + root = new TemplateNode(root); + String tagName = "{{"+parentTag+"}}"; + log.severe("Missing closure of tag: "+tagName); + root.addFirst(new TmplStaticString(tagName)); + } + return root; } @@ -141,8 +158,14 @@ public class Templator { public TemplateNode(){ this.entities = new ArrayList(); } + public TemplateNode(TemplateNode node){ + this.entities = node.entities; + } - public void addEntity(TemplateEntity s){ + public void addFirst(TemplateEntity s){ + entities.add(0, s); + } + public void add(TemplateEntity s){ entities.add(s); }