diff --git a/jte/src/main/java/gg/jte/compiler/TemplateCompiler.java b/jte/src/main/java/gg/jte/compiler/TemplateCompiler.java index 22b29ccb..4e797645 100644 --- a/jte/src/main/java/gg/jte/compiler/TemplateCompiler.java +++ b/jte/src/main/java/gg/jte/compiler/TemplateCompiler.java @@ -9,14 +9,10 @@ import gg.jte.compiler.java.JavaClassCompiler; import gg.jte.compiler.java.JavaCodeGenerator; import gg.jte.compiler.module.Module; -import gg.jte.compiler.module.ModuleImport; -import gg.jte.compiler.module.ModuleInfo; -import gg.jte.compiler.module.ModuleInfoParser; import gg.jte.extension.api.JteConfig; import gg.jte.extension.api.JteExtension; import gg.jte.extension.api.TemplateDescription; import gg.jte.output.FileOutput; -import gg.jte.resolve.DirectoryCodeResolver; import gg.jte.runtime.*; import java.io.IOException; @@ -58,7 +54,7 @@ public Template load(String name) { @Override public Template hotReload(String name) { - LinkedHashSet classDefinitions = generate(Collections.singletonList(name), true, readModuleInformation("", codeResolver)); + LinkedHashSet classDefinitions = generate(Collections.singletonList(name), true, getModule()); classDefinitions.removeIf(c -> !c.isChanged()); if (!classDefinitions.isEmpty()) { @@ -85,7 +81,7 @@ public void cleanAll() { @Override public List generateAll() { - Module module = readModuleInformation("", codeResolver); + Module module = getModule(); Collection names = module.resolveAllTemplateNames(); LinkedHashSet classDefinitions = generate(names, false, module); @@ -94,7 +90,7 @@ public List generateAll() { @Override public List precompileAll() { - Module module = readModuleInformation("", codeResolver); + Module module = getModule(); Collection names = module.resolveAllTemplateNames(); LinkedHashSet classDefinitions = generate(names, false, module); @@ -102,7 +98,7 @@ public List precompileAll() { } public List precompile(List names) { - LinkedHashSet classDefinitions = generate(names, false, readModuleInformation("", codeResolver)); + LinkedHashSet classDefinitions = generate(names, false, getModule()); return precompileClasses(classDefinitions); } @@ -236,28 +232,6 @@ private LinkedHashSet generate(Collection names, boolea return classDefinitions; } - private Module readModuleInformation(String alias, CodeResolver codeResolver) { - String jteRootContent = codeResolver.resolve(".jteroot"); - if (jteRootContent == null) { - return new Module(alias, codeResolver, Map.of(), false); - } - - if (!(codeResolver instanceof DirectoryCodeResolver directoryCodeResolver)) { - return new Module(alias, codeResolver, Map.of(), false); - } - - ModuleInfo moduleInfo = ModuleInfoParser.parse(jteRootContent); - Map children = new LinkedHashMap<>(); - - for ( ModuleImport moduleImport : moduleInfo.imports() ) { - Path modulePath = directoryCodeResolver.getRoot().resolve(moduleImport.from()).normalize(); - DirectoryCodeResolver moduleDirectoryResolver = new DirectoryCodeResolver(modulePath); - children.put(moduleImport.alias(), readModuleInformation(moduleImport.alias(), moduleDirectoryResolver)); - } - - return new Module(alias, codeResolver, children, moduleInfo.parent()); - } - private LinkedHashSet initTemplateDependencies(String name) { LinkedHashSet templateDependencies = new LinkedHashSet<>(); templateDependencies.add(new TemplateDependency(name, codeResolver.getLastModified(name))); @@ -385,4 +359,8 @@ private JteExtension loadExtension(Map.Entry> extens } } + private Module getModule() { + return Module.create("", codeResolver); + } + } diff --git a/jte/src/main/java/gg/jte/compiler/module/Module.java b/jte/src/main/java/gg/jte/compiler/module/Module.java index fab89f68..1022d7f6 100644 --- a/jte/src/main/java/gg/jte/compiler/module/Module.java +++ b/jte/src/main/java/gg/jte/compiler/module/Module.java @@ -1,15 +1,36 @@ package gg.jte.compiler.module; -import java.util.Collection; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; +import java.nio.file.Path; +import java.util.*; import gg.jte.CodeResolver; +import gg.jte.resolve.DirectoryCodeResolver; public final class Module { + public static Module create(String alias, CodeResolver codeResolver) { + String jteRootContent = codeResolver.resolve(".jteroot"); + if (jteRootContent == null) { + return new Module(alias, codeResolver, Map.of(), false); + } + + if (!(codeResolver instanceof DirectoryCodeResolver directoryCodeResolver)) { + return new Module(alias, codeResolver, Map.of(), false); + } + + ModuleInfo moduleInfo = ModuleInfoParser.parse(jteRootContent); + Map children = new LinkedHashMap<>(); + + for ( ModuleImport moduleImport : moduleInfo.imports() ) { + Path modulePath = directoryCodeResolver.getRoot().resolve(moduleImport.from()).normalize(); + DirectoryCodeResolver moduleDirectoryResolver = new DirectoryCodeResolver(modulePath); + children.put(moduleImport.alias(), create(moduleImport.alias(), moduleDirectoryResolver)); + } + + return new Module(alias, codeResolver, children, moduleInfo.parent()); + } + public static String getModuleAlias(String name) { int index = name.indexOf('/'); if (index == -1) {