From 087daac8e8315b153134331b9bfdb503f30a1bd2 Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Thu, 27 Aug 2020 11:35:20 +0200
Subject: [PATCH] Use mustache submodule.

---
 .gitmodules                                   |  3 +
 ragconnect.base/build.gradle                  | 22 ++++---
 .../jastadd/{backend => }/Configuration.jadd  |  0
 .../src/main/jastadd/Printing.jrag            | 64 -------------------
 ragconnect.base/src/main/jastadd/YAML.jrag    | 31 ---------
 ragconnect.base/src/main/jastadd/YAML.relast  |  9 ---
 .../{backend => intermediate}/Generation.jadd |  0
 .../{backend => intermediate}/Mappings.jrag   |  0
 .../{ => intermediate}/MustacheNodes.relast   |  0
 .../MustacheNodesToYAML.jrag                  |  8 ++-
 ragconnect.base/src/main/jastadd/mustache     |  1 +
 .../ragconnect/compiler/SimpleMain.java       |  2 +-
 12 files changed, 25 insertions(+), 115 deletions(-)
 rename ragconnect.base/src/main/jastadd/{backend => }/Configuration.jadd (100%)
 delete mode 100644 ragconnect.base/src/main/jastadd/YAML.jrag
 delete mode 100644 ragconnect.base/src/main/jastadd/YAML.relast
 rename ragconnect.base/src/main/jastadd/{backend => intermediate}/Generation.jadd (100%)
 rename ragconnect.base/src/main/jastadd/{backend => intermediate}/Mappings.jrag (100%)
 rename ragconnect.base/src/main/jastadd/{ => intermediate}/MustacheNodes.relast (100%)
 rename ragconnect.base/src/main/jastadd/{backend => intermediate2mustache}/MustacheNodesToYAML.jrag (96%)
 create mode 160000 ragconnect.base/src/main/jastadd/mustache

diff --git a/.gitmodules b/.gitmodules
index 9971a64..0cf1e8a 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
 [submodule "relast-preprocessor"]
 	path = relast-preprocessor
 	url = ../relast-preprocessor.git
+[submodule "ragconnect.base/src/main/jastadd/mustache"]
+	path = ragconnect.base/src/main/jastadd/mustache
+	url = ../mustache
diff --git a/ragconnect.base/build.gradle b/ragconnect.base/build.gradle
index 5fd73e5..153a3be 100644
--- a/ragconnect.base/build.gradle
+++ b/ragconnect.base/build.gradle
@@ -51,7 +51,7 @@ task newVersion() {
     }
 }
 
-File genSrc = file("src/gen/java");
+File genSrc = file("src/gen/java")
 sourceSets.main.java.srcDir genSrc
 idea.module.generatedSourceDirs += genSrc
 
@@ -67,16 +67,20 @@ jar {
     archiveBaseName = 'ragconnect'
 }
 
+File preprocessorGrammar = file('../relast-preprocessor/src/main/jastadd/RelAst.relast')
+File ragConnectGrammar = file('./src/main/jastadd/RagConnect.relast')
+File intermediateGrammar = file('./src/main/jastadd/intermediate/MustacheNodes.relast')
+File mustacheGrammar = file('./src/main/jastadd/mustache/Mustache.relast')
 task relast(type: JavaExec) {
     group = 'Build'
     main = "-jar"
 
     args = [
             "../libs/relast.jar",
-            "../relast-preprocessor/src/main/jastadd/RelAst.relast",
-            "./src/main/jastadd/RagConnect.relast",
-            "./src/main/jastadd/MustacheNodes.relast",
-            "./src/main/jastadd/YAML.relast",
+            preprocessorGrammar,
+            ragConnectGrammar,
+            intermediateGrammar,
+            mustacheGrammar,
             "--listClass=java.util.ArrayList",
             "--jastAddList=JastAddList",
             "--useJastAddNames",
@@ -86,10 +90,10 @@ task relast(type: JavaExec) {
     ]
 
     inputs.files("../libs/relast.jar",
-            "../relast-preprocessor/src/main/jastadd/RelAst.relast",
-            "./src/main/jastadd/RagConnect.relast",
-            "./src/main/jastadd/MustacheNodes.relast",
-            "./src/main/jastadd/YAML.relast")
+            preprocessorGrammar,
+            ragConnectGrammar,
+            intermediateGrammar,
+            mustacheGrammar)
     outputs.files("./src/gen/jastadd/RagConnect.ast",
             "./src/gen/jastadd/RagConnect.jadd",
             "./src/gen/jastadd/RagConnectRefResolver.jadd",
diff --git a/ragconnect.base/src/main/jastadd/backend/Configuration.jadd b/ragconnect.base/src/main/jastadd/Configuration.jadd
similarity index 100%
rename from ragconnect.base/src/main/jastadd/backend/Configuration.jadd
rename to ragconnect.base/src/main/jastadd/Configuration.jadd
diff --git a/ragconnect.base/src/main/jastadd/Printing.jrag b/ragconnect.base/src/main/jastadd/Printing.jrag
index 74607ae..89b9b82 100644
--- a/ragconnect.base/src/main/jastadd/Printing.jrag
+++ b/ragconnect.base/src/main/jastadd/Printing.jrag
@@ -1,6 +1,4 @@
 aspect Printing {
-  String ASTNode.PRINT_INDENT = "  ";
-
   syn String MappingDefinitionType.prettyPrint();
   eq JavaMappingDefinitionType.prettyPrint() = getType().getName();
   eq JavaArrayMappingDefinitionType.prettyPrint() = getType().getName() + "[]";
@@ -10,66 +8,4 @@ aspect Printing {
     generateAbstractGrammar(sb);
     return sb.toString();
   }
-
-  syn String Document.prettyPrint() {
-    StringBuilder sb = new StringBuilder();
-    sb.append("# RagConnect created at ").append(java.time.Instant.now()).append("\n");
-    for (ComplexElement element : getComplexElementList()) {
-      element.prettyPrint(sb, false, "");
-    }
-    if (sb.charAt(sb.length() - 1) != '\n') {
-      sb.append("\n");
-    }
-    return sb.toString();
-  }
-  syn StringBuilder Element.prettyPrint(StringBuilder sb, boolean printIndent, String indent);
-  eq ValueElement.prettyPrint(StringBuilder sb, boolean printIndent, String indent) {
-    sb.append(getValue());
-    return sb;
-  }
-  eq StringElement.prettyPrint(StringBuilder sb, boolean printIndent, String indent) {
-    sb.append("\"").append(getValue()).append("\"");
-    return sb;
-  }
-  eq ListElement.prettyPrint(StringBuilder sb, boolean printIndent, String indent) {
-    if (isEmpty()) {
-      sb.append("[]");
-    } else {
-      for (Element element : getElementList()) {
-        sb.append(indent).append("- ");
-        element.prettyPrint(sb, false, indent + PRINT_INDENT);
-        sb.append("\n");
-      }
-      // delete last newline
-      sb.deleteCharAt(sb.length() - 1);
-    }
-    return sb;
-  }
-  eq KeyValuePair.prettyPrint(StringBuilder sb, boolean printIndent, String indent) {
-    if (printIndent) sb.append(indent);
-    sb.append(getKey()).append(": ");
-    if (getValue().isComplex() && !getValue().isEmpty()) {
-      sb.append("\n");
-      getValue().prettyPrint(sb, true, indent + PRINT_INDENT);  //);
-    } else {
-      getValue().prettyPrint(sb, false, indent);
-    }
-    return sb;
-  }
-  eq MappingElement.prettyPrint(StringBuilder sb, boolean printIndent, String indent) {
-    if (isEmpty()) {
-      sb.append("{}");
-    } else {
-      boolean first = true;
-      for (KeyValuePair pair : getKeyValuePairList()) {
-        if (!first || printIndent) sb.append(indent);
-        first = false;
-        pair.prettyPrint(sb, false, indent);  // + PRINT_INDENT
-        sb.append("\n");
-      }
-      // delete last newline
-      sb.deleteCharAt(sb.length() - 1);
-    }
-    return sb;
-  }
 }
diff --git a/ragconnect.base/src/main/jastadd/YAML.jrag b/ragconnect.base/src/main/jastadd/YAML.jrag
deleted file mode 100644
index 93dd0f3..0000000
--- a/ragconnect.base/src/main/jastadd/YAML.jrag
+++ /dev/null
@@ -1,31 +0,0 @@
-aspect Navigation {
-  eq Document.getChild().program() = null;
-  eq Document.getChild().ragconnect() = null;
-  eq Document.getChild().containedFile() = null;
-  eq Document.getChild().containedFileName() = getFileName();
-
-  syn boolean Element.isComplex() = false;
-  eq ComplexElement.isComplex() = true;
-
-  syn boolean Element.isEmpty() = false;
-  eq MappingElement.isEmpty() = getNumKeyValuePair() == 0;
-  eq ListElement.isEmpty() = getNumElement() == 0;
-}
-
-aspect Helper {
-  public static ValueElement ValueElement.of(int value) {
-    return new ValueElement(String.valueOf(value));
-  }
-  public static ValueElement ValueElement.of(boolean value) {
-    return new ValueElement(String.valueOf(value));
-  }
-  public static ValueElement ValueElement.of(String value) {
-    return new ValueElement(value);
-  }
-  public static StringElement StringElement.of(String value) {
-    return new StringElement(value);
-  }
-  public void MappingElement.addKeyValuePair(String key, Element value) {
-    addKeyValuePair(new KeyValuePair(key, value));
-  }
-}
diff --git a/ragconnect.base/src/main/jastadd/YAML.relast b/ragconnect.base/src/main/jastadd/YAML.relast
deleted file mode 100644
index 94f4ab2..0000000
--- a/ragconnect.base/src/main/jastadd/YAML.relast
+++ /dev/null
@@ -1,9 +0,0 @@
-Document ::= <FileName> ComplexElement* ;
-abstract Element ;
-abstract ComplexElement : Element ;
-MappingElement : ComplexElement ::= KeyValuePair* ;
-KeyValuePair : ComplexElement ::= <Key> Value:Element ;
-ListElement : ComplexElement ::= Element* ;
-abstract SimpleElement : Element ;
-ValueElement : SimpleElement ::= <Value> ;
-StringElement : SimpleElement ::= <Value> ;
diff --git a/ragconnect.base/src/main/jastadd/backend/Generation.jadd b/ragconnect.base/src/main/jastadd/intermediate/Generation.jadd
similarity index 100%
rename from ragconnect.base/src/main/jastadd/backend/Generation.jadd
rename to ragconnect.base/src/main/jastadd/intermediate/Generation.jadd
diff --git a/ragconnect.base/src/main/jastadd/backend/Mappings.jrag b/ragconnect.base/src/main/jastadd/intermediate/Mappings.jrag
similarity index 100%
rename from ragconnect.base/src/main/jastadd/backend/Mappings.jrag
rename to ragconnect.base/src/main/jastadd/intermediate/Mappings.jrag
diff --git a/ragconnect.base/src/main/jastadd/MustacheNodes.relast b/ragconnect.base/src/main/jastadd/intermediate/MustacheNodes.relast
similarity index 100%
rename from ragconnect.base/src/main/jastadd/MustacheNodes.relast
rename to ragconnect.base/src/main/jastadd/intermediate/MustacheNodes.relast
diff --git a/ragconnect.base/src/main/jastadd/backend/MustacheNodesToYAML.jrag b/ragconnect.base/src/main/jastadd/intermediate2mustache/MustacheNodesToYAML.jrag
similarity index 96%
rename from ragconnect.base/src/main/jastadd/backend/MustacheNodesToYAML.jrag
rename to ragconnect.base/src/main/jastadd/intermediate2mustache/MustacheNodesToYAML.jrag
index 2894d3a..67fc12f 100644
--- a/ragconnect.base/src/main/jastadd/backend/MustacheNodesToYAML.jrag
+++ b/ragconnect.base/src/main/jastadd/intermediate2mustache/MustacheNodesToYAML.jrag
@@ -60,7 +60,7 @@ aspect MustacheNodesToYAML {
     }
     root.addKeyValuePair("TokenComponents", tokenComponents);
 
-    doc.addComplexElement(root);
+    doc.setRootElement(root);
     return doc;
   }
 
@@ -151,5 +151,11 @@ aspect MustacheNodesToYAML {
     }
     return innerMappingDefinitions;
   }
+}
 
+aspect Navigation {
+  eq Document.getChild().program() = null;
+  eq Document.getChild().ragconnect() = null;
+  eq Document.getChild().containedFile() = null;
+  eq Document.getChild().containedFileName() = getFileName();
 }
diff --git a/ragconnect.base/src/main/jastadd/mustache b/ragconnect.base/src/main/jastadd/mustache
new file mode 160000
index 0000000..2bf8690
--- /dev/null
+++ b/ragconnect.base/src/main/jastadd/mustache
@@ -0,0 +1 @@
+Subproject commit 2bf869031ffc69bdb88dafd2cb4464a26502ae2b
diff --git a/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java b/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java
index ee9ed04..b04e477 100644
--- a/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java
+++ b/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java
@@ -82,7 +82,7 @@ public class SimpleMain {
     firstLevel.addKeyValuePair(goalPoses);
 
     root.setValue(firstLevel);
-    doc.addComplexElement(root);
+    doc.setRootElement(root);
 
     System.out.println(doc.prettyPrint());
   }
-- 
GitLab