summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2019-07-21 15:52:00 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2019-07-21 15:52:00 -0400
commit6b810efa8765047a669be0e9ff6501ddda5c49a9 (patch)
tree0e65344afe3a58efdc662a22867bc8ab2948f3e6 /src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java
parentdd4bdab11c715fa2dcc438f287806b50f8467fd3 (diff)
parenta4d1507727e9aeeea0982ebbda785a961902d46c (diff)
Merge cleanups
Diffstat (limited to 'src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java')
-rw-r--r--src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java b/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java
index 80c8315..81c0c47 100644
--- a/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java
+++ b/src/main/java/bjc/rgens/parser/templates/LiveTemplateElement.java
@@ -6,6 +6,12 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import bjc.utils.data.BooleanToggle;
+import bjc.utils.data.ITree;
+import bjc.utils.data.Tree;
+import bjc.utils.funcdata.FunctionalList;
+import bjc.utils.funcdata.IList;
+
import bjc.rgens.parser.GenerationState;
import bjc.rgens.parser.RGrammarParser;
import bjc.rgens.parser.elements.CaseElement;
@@ -13,12 +19,30 @@ import bjc.rgens.parser.elements.LiteralCaseElement;
import bjc.utils.data.BooleanToggle;
import bjc.utils.funcdata.FunctionalList;
+/**
+ * A template element that can contain rule elements.
+ *
+ * @author Ben Culkin.
+ */
public class LiveTemplateElement extends TemplateElement {
+ // Pattern for matching elements (any number of characters bracketed by '$@' and '@$')
private static final Pattern INSERT_PAT = Pattern.compile("\\$@(.+?)@\\$");
+ /**
+ * The sub-elements of this element.
+ */
public final List<List<CaseElement>> elements;
- public LiveTemplateElement(String val) {
+ /**
+ * Create a new template element.
+ *
+ * @param val
+ * The string to parse this element from.
+ *
+ * @param errs
+ * A tree to add errors &amp; information to.
+ */
+ public LiveTemplateElement(String val, ITree<String> errs) {
super(true);
elements = new ArrayList<>();
@@ -30,10 +54,12 @@ public class LiveTemplateElement extends TemplateElement {
mat.appendReplacement(sb, "");
String body = mat.group(1);
- FunctionalList<CaseElement> elms = (FunctionalList<CaseElement>)RGrammarParser.parseElementString(body).getLeft();
+ List<CaseElement> elms = new ArrayList<>();
+
+ int weight = RGrammarParser.parseElementString(body, elms, errs);
elements.add(Arrays.asList(new LiteralCaseElement(sb.toString())));
- elements.add(elms.getInternal());
+ elements.add(elms);
sb = new StringBuffer();
}
@@ -42,6 +68,7 @@ public class LiveTemplateElement extends TemplateElement {
elements.add(Arrays.asList(new LiteralCaseElement(sb.toString())));
}
+ @Override
public void generate(GenerationState state) {
BooleanToggle bt = new BooleanToggle(false);