From 88264e06ffc97480185fd8bf63d9005801f79c04 Mon Sep 17 00:00:00 2001 From: rschoene <rene.schoene@tu-dresden.de> Date: Mon, 10 Oct 2022 16:27:15 +0200 Subject: [PATCH] 3.0.0 - prepare new release - coherent styling of nodes and relation labels --- dumpAst.base/src/main/jastadd/Navigation.jrag | 10 ++++++++++ dumpAst.base/src/main/jastadd/Printing.jrag | 18 ++++++++++-------- .../st/jastadd/dumpAst/ast/DumpBuilder.java | 2 ++ .../jastadd/featureTest/FeatureTestMain.java | 14 +++++++++++++- .../inf/st/jastadd/testDumper/TestSimple.java | 6 +++--- 5 files changed, 38 insertions(+), 12 deletions(-) diff --git a/dumpAst.base/src/main/jastadd/Navigation.jrag b/dumpAst.base/src/main/jastadd/Navigation.jrag index fcec323..5935de9 100644 --- a/dumpAst.base/src/main/jastadd/Navigation.jrag +++ b/dumpAst.base/src/main/jastadd/Navigation.jrag @@ -30,6 +30,16 @@ aspect Navigation { eq DumpNode.getDumpToken().containingDumpNode() = this; eq DumpNode.getInvisiblePath().containingDumpNode() = this; + // --- containingDumpListChildNode --- + inh DumpListChildNode InnerDumpNode.containingDumpListChildNode(); + eq DumpListChildNode.getInnerDumpNode().containingDumpListChildNode() = this; + + // --- containingDumpListRelation --- + inh DumpListRelation InnerRelationDumpNode.containingDumpListRelation(); + eq DumpListRelation.getInnerRelationDumpNode().containingDumpListRelation() = this; + eq DumpReferenceListToken.getInnerRelationDumpNode().containingDumpListRelation() = null; + eq InvisiblePath.getInnerRelationDumpNode().containingDumpListRelation() = null; + // --- container --- syn DumpNode DumpNode.container() { if (getContainerOfNormalChild() != null) { diff --git a/dumpAst.base/src/main/jastadd/Printing.jrag b/dumpAst.base/src/main/jastadd/Printing.jrag index 7493711..eb16c80 100644 --- a/dumpAst.base/src/main/jastadd/Printing.jrag +++ b/dumpAst.base/src/main/jastadd/Printing.jrag @@ -25,14 +25,16 @@ aspect Printing { syn String DumpNode.label() = getLabel(); inh String InnerDumpNode.label(); inh String InnerRelationDumpNode.label(); - eq DumpListChildNode.getInnerDumpNode(int index).label() = label() + - (getInnerDumpNode(index).getDumpNode().isEmpty() ? - "" : - "[" + chooseIndex(getInnerDumpNode(index).getOriginalIndex(), index) + "]"); - eq DumpListRelation.getInnerRelationDumpNode(int index).label() = label() + - (getInnerRelationDumpNode(index).getDumpNode().isEmpty() ? - "" : - "[" + chooseIndex(getInnerRelationDumpNode(index).getOriginalIndex(), index) + "]"); + eq DumpListChildNode.getInnerDumpNode(int index).label() { + InnerDumpNode inner = getInnerDumpNode(index); + return inner.getLabel() + + (inner.getDumpNode().isEmpty() ? "" : "[" + chooseIndex(inner.getOriginalIndex(), index) + "]"); + } + eq DumpListRelation.getInnerRelationDumpNode(int index).label() { + InnerRelationDumpNode inner = getInnerRelationDumpNode(index); + return inner.getLabel() + + (inner.getDumpNode().isEmpty() ? "" : "[" + chooseIndex(inner.getOriginalIndex(), index) + "]"); + } eq DumpReferenceListToken.getInnerRelationDumpNode(int index).label() = label() + "[" + index + "]"; eq InvisiblePath.getInnerRelationDumpNode(int index).label() = null; protected int ASTNode.chooseIndex(int originalIndex, int inheritedIndex) { diff --git a/dumpAst.base/src/main/java/de/tudresden/inf/st/jastadd/dumpAst/ast/DumpBuilder.java b/dumpAst.base/src/main/java/de/tudresden/inf/st/jastadd/dumpAst/ast/DumpBuilder.java index 0f94480..6644961 100644 --- a/dumpAst.base/src/main/java/de/tudresden/inf/st/jastadd/dumpAst/ast/DumpBuilder.java +++ b/dumpAst.base/src/main/java/de/tudresden/inf/st/jastadd/dumpAst/ast/DumpBuilder.java @@ -97,6 +97,8 @@ public class DumpBuilder { dumpAst.setPrintConfig(new PrintConfig()); dumpAst.getPrintConfig().setScale(1); dumpAst.getPrintConfig().setVersion(readVersion()); + dumpAst.getPrintConfig().setNodeStyleDefinition((node, style) -> {}); + dumpAst.getPrintConfig().setRelationStyleDefinition((sourceNode, targetNode, context, style) -> {}); } private DumpBuilder thisWithResetBuilt() { diff --git a/dumpAst.prototyping/src/main/java/de/tudresden/inf/st/jastadd/featureTest/FeatureTestMain.java b/dumpAst.prototyping/src/main/java/de/tudresden/inf/st/jastadd/featureTest/FeatureTestMain.java index dc47a4a..ea4c631 100644 --- a/dumpAst.prototyping/src/main/java/de/tudresden/inf/st/jastadd/featureTest/FeatureTestMain.java +++ b/dumpAst.prototyping/src/main/java/de/tudresden/inf/st/jastadd/featureTest/FeatureTestMain.java @@ -72,7 +72,19 @@ public class FeatureTestMain { } }) .skinParam(SkinParamBooleanSetting.Shadowing, false) - .setNameMethod(node -> node.getClass().getSimpleName() + ASTNode.counter++); + .relationStyle((source, target, context, style) -> { + if (context.equals("ManyA")) { + style.setLabel("ManyA of " + ((Nameable) source).getName()); + } else if (context.equals("OneA") || context.equals("MaybeC")) { + style.setTextColor("red"); + } + }) + .<ASTNode<?>>nodeStyle((node, style) -> { + if (node.isA()) { + style.setBackgroundColor("yellow"); + } + style.setLabel(node.getClass().getSimpleName() + ASTNode.counter++); + }); builder.dumpAsYaml(pathToYaml, true); builder.dumpAsPNG(pathToPng); diff --git a/dumpAst.tests/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java b/dumpAst.tests/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java index abdf25d..2f4224a 100644 --- a/dumpAst.tests/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java +++ b/dumpAst.tests/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java @@ -285,7 +285,7 @@ public class TestSimple { Root root = createRoot(createA(A_NAME), null); List<DumpNode> nodes = TestUtils.dumpModel(root, - builder -> builder.<ASTNode<?>>setNameMethod(n -> n.isA() ? "A" : "Not A")); + builder -> builder.<ASTNode<?>>nodeStyle((node, style) -> style.setLabel(node.isA() ? "A" : "Not A"))); DumpNode actualRoot = TestUtils.findByName(nodes, ROOT_NAME); assertEquals("Not A", actualRoot.getLabel()); @@ -298,7 +298,7 @@ public class TestSimple { Root root = createRoot(createA(A_NAME), null); List<DumpNode> nodes = TestUtils.dumpModel(root, - builder -> builder.<ASTNode<?>>setTextColorMethod(n -> n.isA() ? "red" : "")); + builder -> builder.<ASTNode<?>>nodeStyle((node, style) -> style.setTextColor(node.isA() ? "red" : ""))); DumpNode actualRoot = TestUtils.findByName(nodes, ROOT_NAME); assertEquals("", actualRoot.getTextColor()); @@ -311,7 +311,7 @@ public class TestSimple { Root root = createRoot(createA(A_NAME), null); List<DumpNode> nodes = TestUtils.dumpModel(root, - builder -> builder.<ASTNode<?>>setBackgroundColorMethod(n -> n.isA() ? "green" : "")); + builder -> builder.<ASTNode<?>>nodeStyle((node, style) -> style.setBackgroundColor(node.isA() ? "green" : ""))); DumpNode actualRoot = TestUtils.findByName(nodes, ROOT_NAME); assertEquals("", actualRoot.getBackgroundColor()); -- GitLab