diff options
author | Kristóf Marussy <kristof@marussy.com> | 2023-12-22 02:19:38 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2023-12-24 17:32:54 +0100 |
commit | c65275be9fce0fbba70094c754690a8bd9228ab4 (patch) | |
tree | 8ba97d3668229482f8e25272ebfe62c2d27cca12 /subprojects/language/src/main/java | |
parent | refactor(language): use file extension provider (diff) | |
download | refinery-c65275be9fce0fbba70094c754690a8bd9228ab4.tar.gz refinery-c65275be9fce0fbba70094c754690a8bd9228ab4.tar.zst refinery-c65275be9fce0fbba70094c754690a8bd9228ab4.zip |
feat: solution serializer
Diffstat (limited to 'subprojects/language/src/main/java')
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(); |