static IResourceLoader resourceLoaderFromJar(File mainJar, File unpackDir) { print("Unpacking to: " + unpackDir); SS titles = cast safeUnstructure(loadTextFileFromZip(mainJar, "snippet-titles.struct")); assertNempty("Snippet titles", titles); Map types = cast safeUnstructure(loadTextFileFromZip(mainJar, "snippet-types.struct")); ret new IResourceLoader { public S loadSnippet(S snippetID) { ret loadTextFileFromZip(mainJar, psI(snippetID) + ".text"); } public S getTranspiled(S snippetID) { S src = loadTextFileFromZip(mainJar, psI(snippetID) + ".transpiled"); if (empty(src)) print("Warning: Transpilation for " + snippetID + " not found"); ret src; } public int getSnippetType(S snippetID) { ret or0(types.get(fsI(snippetID))); } public S getSnippetTitle(S snippetID) { ret titles.get(fsI(snippetID)); } public File loadLibrary(S snippetID) { long id = psI(snippetID); ret optExtractFileFromZipToDir(mainJar, unpackDir, id + (isImageServerSnippet(id) ? ".png" : ".bin")); } public File pathToJavaXJar() { ret mainJar; } public File getSnippetJar(S snippetID, S transpiledSrc) { null; // just compile through CompilerBot } }; }