diff options
Diffstat (limited to 'src/main/java/org/zwobble')
2 files changed, 32 insertions, 11 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGenerator.java new file mode 100644 index 0000000..d3914de --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGenerator.java @@ -0,0 +1,30 @@ +package org.zwobble.hobgoblin.compiler.output.generators.java; + +import org.zwobble.hobgoblin.compiler.output.lang.java.JavaWriter; +import org.zwobble.hobgoblin.compiler.output.lang.java.ast.JavaCompilationUnit; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; +import java.util.List; + +public class JavaGenerator { + private void JavaGenerator() {} + + public static void write( + Path sourceRootDirectory, + List<JavaCompilationUnit> javaCompilationUnits + ) throws IOException { + for (var javaCompilationUnit : javaCompilationUnits) { + var javaCompilationUnitPath = sourceRootDirectory + .resolve(String.join(File.separator, javaCompilationUnit.packageName())) + .resolve(javaCompilationUnit.typeDeclaration().name() + ".java"); + try (var writer = JavaWriter.file(javaCompilationUnitPath)) { + writer.writeCompilationUnit(javaCompilationUnit); + } catch (Exception e) { + // TODO: better handling + throw new RuntimeException(e); + } + } + } +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java index 653da8d..9d50bed 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java @@ -5,6 +5,7 @@ import org.zwobble.hobgoblin.compiler.ast.typed.*; import org.zwobble.hobgoblin.compiler.builtins.NativeTypes; import org.zwobble.hobgoblin.compiler.config.OutputConfig; import org.zwobble.hobgoblin.compiler.output.generators.Generator; +import org.zwobble.hobgoblin.compiler.output.generators.java.JavaGenerator; import org.zwobble.hobgoblin.compiler.output.lang.java.JavaWriter; import org.zwobble.hobgoblin.compiler.output.lang.java.ast.*; import org.zwobble.hobgoblin.compiler.parser.Parser; @@ -101,17 +102,7 @@ public class JavaTypesGenerator implements Generator { for (var namespace : namespaces) { var javaCompilationUnits = generateNamespace(namespace, context); - for (var javaCompilationUnit : javaCompilationUnits) { - var javaCompilationUnitPath = this.sourceRootDirectory - .resolve(String.join(File.separator, javaCompilationUnit.packageName())) - .resolve(javaCompilationUnit.typeDeclaration().name() + ".java"); - try (var writer = JavaWriter.file(javaCompilationUnitPath)) { - writer.writeCompilationUnit(javaCompilationUnit); - } catch (Exception e) { - // TODO: better handling - throw new RuntimeException(e); - } - } + JavaGenerator.write(this.sourceRootDirectory, javaCompilationUnits); } } |
