1 package org.simantics.scl.compiler.module.repository;
3 import java.util.ArrayList;
5 import java.util.regex.Pattern;
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;
12 import gnu.trove.procedure.TObjectProcedure;
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>() {
21 public boolean execute(String moduleName) {
22 Failable<Module> failableModule = repository.getModule(moduleName);
23 if(!failableModule.didSucceed())
25 Module module = failableModule.getResult();
26 module.findValuesForPrefix("", AcceptAllNamespaceFilter.INSTANCE, new TObjectProcedure<SCLValue>() {
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())) {
44 public static List<SCLValue> allValues(ModuleRepository repository) {
45 return allValuesMatching(repository, null);