diff --git a/dumpAst.base/src/main/jastadd/Navigation.jrag b/dumpAst.base/src/main/jastadd/Navigation.jrag index fcec323db3a60fecb4eaa93690d73cbdd4b118a0..5935de96b99892d9b0b2c31d85ba4f65d65ca3c2 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 74937113a800de6850174dfbf13995c38b6ea3af..eb16c8074de6935e485db0ad0d0d089fd3d97b41 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 0f94480a58c6b1f90a3bc54f28a3a6b5281891c5..6644961f6b73441e21a8b218e5d00c05134c658d 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 dc47a4a4b759f58b510771014860aee9bc01d593..ea4c63182989f237fdc72a7c88b57f53b5048bc3 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 abdf25d92b2e2e40413894cc5e4b3c29a0bf8535..2f4224aeb3b54fcdff79f8afc2ef1992f27f70c7 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());