aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-11-06 00:13:48 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-11-17 12:41:34 +0100
commit9b6eeb1e77b05e2c2c0be5dcb285bbef128ab1f0 (patch)
tree1a40c4d5ef9fa2482a9e4e65805a02f0b341d815 /subprojects/language
parentfeat(language): validate unique names (diff)
downloadrefinery-9b6eeb1e77b05e2c2c0be5dcb285bbef128ab1f0.tar.gz
refinery-9b6eeb1e77b05e2c2c0be5dcb285bbef128ab1f0.tar.zst
refinery-9b6eeb1e77b05e2c2c0be5dcb285bbef128ab1f0.zip
feat(language-ide): content assist filtering
Diffstat (limited to 'subprojects/language')
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java9
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java13
2 files changed, 20 insertions, 2 deletions
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java
index a16f77eb..cac1f265 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java
@@ -24,8 +24,9 @@ import java.util.Map;
24 24
25@Singleton 25@Singleton
26public class ProblemResourceDescriptionStrategy extends DefaultResourceDescriptionStrategy { 26public class ProblemResourceDescriptionStrategy extends DefaultResourceDescriptionStrategy {
27 public static final String ERROR_PREDICATE = "tools.refinery.language.resource" + 27 private static final String DATA_PREFIX = "tools.refinery.language.resource.ProblemResourceDescriptionStrategy.";
28 ".ProblemResourceDescriptionStrategy.ERROR_PREDICATE"; 28 public static final String ARITY = DATA_PREFIX + "ARITY";
29 public static final String ERROR_PREDICATE = DATA_PREFIX + "ERROR_PREDICATE";
29 public static final String ERROR_PREDICATE_TRUE = "true"; 30 public static final String ERROR_PREDICATE_TRUE = "true";
30 31
31 @Inject 32 @Inject
@@ -97,6 +98,10 @@ public class ProblemResourceDescriptionStrategy extends DefaultResourceDescripti
97 98
98 protected Map<String, String> getUserData(EObject eObject) { 99 protected Map<String, String> getUserData(EObject eObject) {
99 var builder = ImmutableMap.<String, String>builder(); 100 var builder = ImmutableMap.<String, String>builder();
101 if (eObject instanceof Relation relation) {
102 int arity = ProblemUtil.getArity(relation);
103 builder.put(ARITY, Integer.toString(arity));
104 }
100 if (eObject instanceof PredicateDefinition predicateDefinition && predicateDefinition.isError()) { 105 if (eObject instanceof PredicateDefinition predicateDefinition && predicateDefinition.isError()) {
101 builder.put(ERROR_PREDICATE, ERROR_PREDICATE_TRUE); 106 builder.put(ERROR_PREDICATE, ERROR_PREDICATE_TRUE);
102 } 107 }
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java b/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java
index a9efc4bb..b3c93b07 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java
@@ -83,6 +83,19 @@ public final class ProblemUtil {
83 return true; 83 return true;
84 } 84 }
85 85
86 public static int getArity(Relation relation) {
87 if (relation instanceof ClassDeclaration || relation instanceof EnumDeclaration) {
88 return 1;
89 }
90 if (relation instanceof ReferenceDeclaration) {
91 return 2;
92 }
93 if (relation instanceof PredicateDefinition predicateDefinition) {
94 return predicateDefinition.getParameters().size();
95 }
96 throw new IllegalArgumentException("Unknown Relation: " + relation);
97 }
98
86 private static URI getLibraryUri(String libraryName) { 99 private static URI getLibraryUri(String libraryName) {
87 return URI.createURI(ProblemUtil.class.getClassLoader() 100 return URI.createURI(ProblemUtil.class.getClassLoader()
88 .getResource("tools/refinery/language/%s.problem".formatted(libraryName)).toString()); 101 .getResource("tools/refinery/language/%s.problem".formatted(libraryName)).toString());