From 2b887718befc50679896368ae6852335ffff49a6 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 29 Aug 2026 10:15:00 +0100 Subject: Add stubbed TypeScript code writer --- .../output/lang/typescript/TypescriptWriter.java | 48 ++++++++++++++++++++++ .../lang/typescript/ast/TypescriptModule.java | 24 +++++++++++ 2 files changed, 72 insertions(+) create mode 100644 src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/TypescriptWriter.java create mode 100644 src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptModule.java (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/TypescriptWriter.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/TypescriptWriter.java new file mode 100644 index 0000000..a031a82 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/TypescriptWriter.java @@ -0,0 +1,48 @@ +package org.zwobble.hobgoblin.compiler.output.lang.typescript; + +import org.zwobble.hobgoblin.compiler.output.CodeWriter; +import org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule; + +import java.io.IOException; +import java.nio.file.Path; + +public class TypescriptWriter implements AutoCloseable { + private static final String LINE_COMMENT_START = "//"; + + public interface Write { + void write(TypescriptWriter writer) throws IOException; + } + + public static void writeTo(Path path, Write write) throws IOException { + CodeWriter.writeTo( + path, + LINE_COMMENT_START, + writer -> write.write(new TypescriptWriter(writer)) + ); + } + + public static void writeTo(CodeWriter.CodeWriterFile file, Write write) throws IOException { + CodeWriter.writeTo( + file, + LINE_COMMENT_START, + writer -> write.write(new TypescriptWriter(writer)) + ); + } + + private final CodeWriter writer; + + public TypescriptWriter(CodeWriter writer) { + this.writer = writer; + } + + @Override + public void close() throws IOException { + this.writer.close(); + } + + // == Modules == + + public void writeModule(TypescriptModule module) throws IOException { + this.writer.writeHeader(); + } +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptModule.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptModule.java new file mode 100644 index 0000000..f66626b --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/typescript/ast/TypescriptModule.java @@ -0,0 +1,24 @@ +// Generated by hobgoblin. + +package org.zwobble.hobgoblin.compiler.output.lang.typescript.ast; + +// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule imports +// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule imports + +public record TypescriptModule() { + public static org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule.Builder(); + } + + public record Builder() { + public org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule build() { + return new org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule(); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.TypescriptModule body +} -- cgit v1.2.3