]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/module/repository/ModuleRepositories.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / module / repository / ModuleRepositories.java
1 package org.simantics.scl.compiler.module.repository;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.regex.Pattern;
6
7 import org.simantics.scl.compiler.elaboration.modules.SCLValue;
8 import org.simantics.scl.compiler.environment.filter.AcceptAllNamespaceFilter;
9 import org.simantics.scl.compiler.errors.Failable;
10 import org.simantics.scl.compiler.module.Module;
11
12 import gnu.trove.procedure.TObjectProcedure;
13
14 public class ModuleRepositories {
15     public static List<SCLValue> allValuesMatching(final ModuleRepository repository, String pattern) {
16         final Pattern compiledPattern = pattern == null ? null 
17                 : Pattern.compile(".*" + pattern + ".*", Pattern.CASE_INSENSITIVE);
18         final ArrayList<SCLValue> results = new ArrayList<SCLValue>(); 
19         repository.getSourceRepository().forAllModules(new TObjectProcedure<String>() {
20             @Override
21             public boolean execute(String moduleName) {
22                 Failable<Module> failableModule = repository.getModule(moduleName);
23                 if(!failableModule.didSucceed())
24                     return true;
25                 Module module = failableModule.getResult();
26                 module.findValuesForPrefix("", AcceptAllNamespaceFilter.INSTANCE, new TObjectProcedure<SCLValue>() {
27                     @Override
28                     public boolean execute(SCLValue value) {
29                         String name = value.getName().name;
30                         if(!value.isPrivate() && !name.startsWith("_") && !(name.contains("$") &&
31                                 Character.isLetter(name.charAt(0))) && 
32                                 (compiledPattern == null || compiledPattern.matcher(name).matches())) {
33                             results.add(value);
34                         }
35                         return true;
36                     }
37                 });
38                 return true;
39             }
40         });
41         return results;
42     }
43     
44     public static List<SCLValue> allValues(ModuleRepository repository) {
45         return allValuesMatching(repository, null);
46     }
47 }