Skip to content

Commit

Permalink
#278 small refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
casid committed Oct 1, 2023
1 parent fd09d6d commit 96f2c35
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 34 deletions.
38 changes: 8 additions & 30 deletions jte/src/main/java/gg/jte/compiler/TemplateCompiler.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -58,7 +54,7 @@ public Template load(String name) {

@Override
public Template hotReload(String name) {
LinkedHashSet<ClassDefinition> classDefinitions = generate(Collections.singletonList(name), true, readModuleInformation("", codeResolver));
LinkedHashSet<ClassDefinition> classDefinitions = generate(Collections.singletonList(name), true, getModule());
classDefinitions.removeIf(c -> !c.isChanged());

if (!classDefinitions.isEmpty()) {
Expand All @@ -85,7 +81,7 @@ public void cleanAll() {

@Override
public List<String> generateAll() {
Module module = readModuleInformation("", codeResolver);
Module module = getModule();
Collection<String> names = module.resolveAllTemplateNames();
LinkedHashSet<ClassDefinition> classDefinitions = generate(names, false, module);

Expand All @@ -94,15 +90,15 @@ public List<String> generateAll() {

@Override
public List<String> precompileAll() {
Module module = readModuleInformation("", codeResolver);
Module module = getModule();
Collection<String> names = module.resolveAllTemplateNames();
LinkedHashSet<ClassDefinition> classDefinitions = generate(names, false, module);

return precompileClasses(classDefinitions);
}

public List<String> precompile(List<String> names) {
LinkedHashSet<ClassDefinition> classDefinitions = generate(names, false, readModuleInformation("", codeResolver));
LinkedHashSet<ClassDefinition> classDefinitions = generate(names, false, getModule());
return precompileClasses(classDefinitions);
}

Expand Down Expand Up @@ -236,28 +232,6 @@ private LinkedHashSet<ClassDefinition> generate(Collection<String> 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<String, Module> 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<TemplateDependency> initTemplateDependencies(String name) {
LinkedHashSet<TemplateDependency> templateDependencies = new LinkedHashSet<>();
templateDependencies.add(new TemplateDependency(name, codeResolver.getLastModified(name)));
Expand Down Expand Up @@ -385,4 +359,8 @@ private JteExtension loadExtension(Map.Entry<String, Map<String, String>> extens
}
}

private Module getModule() {
return Module.create("", codeResolver);
}

}
29 changes: 25 additions & 4 deletions jte/src/main/java/gg/jte/compiler/module/Module.java
Original file line number Diff line number Diff line change
@@ -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<String, Module> 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) {
Expand Down

0 comments on commit 96f2c35

Please sign in to comment.