ModuleEnvironment root = heap.addModule(new ModuleEnvironment("___TUTOR___", heap));
PrintWriter stderr = new PrintWriter(System.err);
PrintWriter stdout = new PrintWriter(System.out);
eval = new Evaluator(ValueFactoryFactory.getValueFactory(), stderr, stdout, root, heap);
URIResolverRegistry reg = eval.getResolverRegistry();
if (isEditMode()) {
FileURIResolver fileURIResolver = new FileURIResolver() {
@Override
public String scheme() {
return "courses";
}
@Override
protected String getPath(URI uri) {
String path = uri.getPath();
return getCoursesLocation() + (path.startsWith("/") ? path : ("/" + path));
}
};
reg.registerInputOutput(fileURIResolver);
}
else {
eval.addRascalSearchPathContributor(StandardLibraryContributor.getInstance());
reg.registerInput(new ClassResourceInput(reg, "courses", getClass(), "/org/rascalmpl/courses"));
}
eval.addRascalSearchPath(URIUtil.rootScheme("tutor"));
eval.addRascalSearchPath(URIUtil.rootScheme("courses"));
for (final String lib : new String[] { "rascal", "rascal-eclipse" }) {
final String libSrc = System.getProperty("rascal.courses.lib." + lib);
if (libSrc != null) {
FileURIResolver fileURIResolver = new FileURIResolver() {
@Override
public String scheme() {
return "clib-" + lib;
}
@Override
protected String getPath(URI uri) {
String path = uri.getPath();
return libSrc + (path.startsWith("/") ? path : ("/" + path));
}
};
reg.registerInputOutput(fileURIResolver);
eval.addRascalSearchPath(URIUtil.rootScheme("clib-" + lib));
}
}
}