Added a function to read the module source text 03/1603/1
authorHannu Niemistö <hannu.niemisto@semantum.fi>
Tue, 20 Mar 2018 12:07:13 +0000 (14:07 +0200)
committerHannu Niemistö <hannu.niemisto@semantum.fi>
Tue, 20 Mar 2018 12:07:13 +0000 (14:07 +0200)
refs #7811

Change-Id: I62a37e226b1f7b531d69e8446bbff805c67825ec

bundles/org.simantics.scl.compiler/scl/SCL/ModuleRepository.scl
bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/source/repository/ModuleSourceRepository.java

index 7d035d8cf6e380c66e3a16d228a237e34ecd2c7b..e8d37789b00be77a32ef8cc6306fd6ab8fa6cb16 100644 (file)
@@ -1,6 +1,6 @@
 module {
     export = [possibleUnsafeSclValueByName, unsafeSclValueByName, sclModuleNames, moduleByName,
-              documentationOfSCLValue, sclValueRef]
+              documentationOfSCLValue, sclValueRef, possibleModuleSourceText]
 }
 
 include "./CurrentModuleRepository"
@@ -35,6 +35,9 @@ importJava "org.simantics.scl.compiler.source.repository.ModuleSourceRepository"
     
     @JavaName getModuleNames
     sclModuleNames_ :: ModuleSourceRepository -> [String]
+    
+    @JavaName getPossibleSourceText
+    possibleModuleSourceText_ :: ModuleSourceRepository -> String -> <Proc> Maybe String
 
 importJava "org.simantics.scl.compiler.errors.Failable" where
     data Failable a
@@ -56,4 +59,7 @@ sclModuleNames = sclModuleNames_ (moduleSourceRepositoryOf MODULE_REPOSITORY)
 moduleByName :: String -> <Proc> Maybe Module
 moduleByName name = getResult failable
   where
-    failable = moduleByName_ MODULE_REPOSITORY name
\ No newline at end of file
+    failable = moduleByName_ MODULE_REPOSITORY name
+    
+possibleModuleSourceText :: String -> <Proc> Maybe String
+possibleModuleSourceText name = possibleModuleSourceText_ (moduleSourceRepositoryOf MODULE_REPOSITORY) name
\ No newline at end of file
index c335a8aa1349d8bc4cf42c1c6ada90fd2961568e..fe014773c909f1ca0a4cc3f79439e8a4d7ab3b5b 100644 (file)
@@ -1,11 +1,13 @@
 package org.simantics.scl.compiler.source.repository;
 
+import java.io.IOException;
 import java.util.Collection;
 import java.util.Collections;
 
 import org.simantics.scl.compiler.module.repository.ModuleRepository;
 import org.simantics.scl.compiler.module.repository.UpdateListener;
 import org.simantics.scl.compiler.source.ModuleSource;
+import org.simantics.scl.compiler.source.TextualModuleSource;
 
 import gnu.trove.procedure.TObjectProcedure;
 
@@ -76,4 +78,13 @@ public interface ModuleSourceRepository {
      */
     default void clear() {
     }
+    
+    default String getPossibleSourceText(String moduleName) throws IOException {
+        ModuleSource moduleSource = getModuleSource(moduleName, null);
+        if(moduleSource == null)
+            return null;
+        if(!(moduleSource instanceof TextualModuleSource))
+            return null;
+        return ((TextualModuleSource)moduleSource).getSourceText(null);
+    }
 }