aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language/src/main/java
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-12-22 02:19:38 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-12-24 17:32:54 +0100
commitc65275be9fce0fbba70094c754690a8bd9228ab4 (patch)
tree8ba97d3668229482f8e25272ebfe62c2d27cca12 /subprojects/language/src/main/java
parentrefactor(language): use file extension provider (diff)
downloadrefinery-c65275be9fce0fbba70094c754690a8bd9228ab4.tar.gz
refinery-c65275be9fce0fbba70094c754690a8bd9228ab4.tar.zst
refinery-c65275be9fce0fbba70094c754690a8bd9228ab4.zip
feat: solution serializer
Diffstat (limited to 'subprojects/language/src/main/java')
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java16
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java6
2 files changed, 17 insertions, 5 deletions
diff --git a/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java b/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java
index 55a5ac20..770a1a19 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java
@@ -75,6 +75,16 @@ public class ProblemFormatter extends AbstractJavaFormatter {
75 } 75 }
76 } 76 }
77 77
78 protected void format(EnumDeclaration enumDeclaration, IFormattableDocument doc) {
79 surroundNewLines(doc, enumDeclaration, this::twoNewLines);
80 var region = regionFor(enumDeclaration);
81 doc.append(region.keyword("enum"), this::oneSpace);
82 doc.prepend(region.keyword("{"), this::oneSpace);
83 doc.append(region.keyword("{"), it -> it.setNewLines(1, 1, 2));
84 doc.prepend(region.keyword("}"), it -> it.setNewLines(1, 1, 2));
85 doc.prepend(region.keyword("."), this::noSpace);
86 }
87
78 protected void format(PredicateDefinition predicateDefinition, IFormattableDocument doc) { 88 protected void format(PredicateDefinition predicateDefinition, IFormattableDocument doc) {
79 surroundNewLines(doc, predicateDefinition, this::twoNewLines); 89 surroundNewLines(doc, predicateDefinition, this::twoNewLines);
80 var region = regionFor(predicateDefinition); 90 var region = regionFor(predicateDefinition);
@@ -151,14 +161,14 @@ public class ProblemFormatter extends AbstractJavaFormatter {
151 } 161 }
152 162
153 protected void surroundNewLines(IFormattableDocument doc, EObject eObject, 163 protected void surroundNewLines(IFormattableDocument doc, EObject eObject,
154 Procedure1<? super IHiddenRegionFormatter> init) { 164 Procedure1<? super IHiddenRegionFormatter> init) {
155 var region = doc.getRequest().getTextRegionAccess().regionForEObject(eObject); 165 var region = doc.getRequest().getTextRegionAccess().regionForEObject(eObject);
156 preprendNewLines(doc, region, init); 166 preprendNewLines(doc, region, init);
157 appendNewLines(doc, region, init); 167 appendNewLines(doc, region, init);
158 } 168 }
159 169
160 protected void preprendNewLines(IFormattableDocument doc, ISequentialRegion region, 170 protected void preprendNewLines(IFormattableDocument doc, ISequentialRegion region,
161 Procedure1<? super IHiddenRegionFormatter> init) { 171 Procedure1<? super IHiddenRegionFormatter> init) {
162 if (region == null) { 172 if (region == null) {
163 return; 173 return;
164 } 174 }
@@ -174,7 +184,7 @@ public class ProblemFormatter extends AbstractJavaFormatter {
174 } 184 }
175 185
176 protected void appendNewLines(IFormattableDocument doc, ISequentialRegion region, 186 protected void appendNewLines(IFormattableDocument doc, ISequentialRegion region,
177 Procedure1<? super IHiddenRegionFormatter> init) { 187 Procedure1<? super IHiddenRegionFormatter> init) {
178 if (region == null) { 188 if (region == null) {
179 return; 189 return;
180 } 190 }
diff --git a/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java b/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java
index b9cafbc2..3432b2d8 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java
@@ -21,8 +21,7 @@ public class PreferShortAssertionsProblemSemanticSequencer extends ProblemSemant
21 21
22 @Override 22 @Override
23 protected void sequence_Assertion(ISerializationContext context, Assertion semanticObject) { 23 protected void sequence_Assertion(ISerializationContext context, Assertion semanticObject) {
24 if (semanticObject.isDefault() || 24 if (!(semanticObject.getValue() instanceof LogicConstant logicConstant) ||
25 !(semanticObject.getValue() instanceof LogicConstant logicConstant) ||
26 logicConstant.getLogicValue() == LogicValue.ERROR) { 25 logicConstant.getLogicValue() == LogicValue.ERROR) {
27 super.sequence_Assertion(context, semanticObject); 26 super.sequence_Assertion(context, semanticObject);
28 return; 27 return;
@@ -39,6 +38,9 @@ public class PreferShortAssertionsProblemSemanticSequencer extends ProblemSemant
39 } 38 }
40 var feeder = createSequencerFeeder(context, semanticObject); 39 var feeder = createSequencerFeeder(context, semanticObject);
41 var access = grammarAccess.getAssertionAccess(); 40 var access = grammarAccess.getAssertionAccess();
41 if (semanticObject.isDefault()) {
42 feeder.accept(access.getDefaultDefaultKeyword_0_0());
43 }
42 feeder.accept(access.getValueShortLogicConstantParserRuleCall_1_1_0_0(), logicConstant); 44 feeder.accept(access.getValueShortLogicConstantParserRuleCall_1_1_0_0(), logicConstant);
43 feeder.accept(access.getRelationRelationQualifiedNameParserRuleCall_1_1_1_0_1(), semanticObject.getRelation()); 45 feeder.accept(access.getRelationRelationQualifiedNameParserRuleCall_1_1_1_0_1(), semanticObject.getRelation());
44 var iterator = semanticObject.getArguments().iterator(); 46 var iterator = semanticObject.getArguments().iterator();