diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-08-29 10:15:00 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-08-29 10:15:00 +0100 |
| commit | 2b887718befc50679896368ae6852335ffff49a6 (patch) | |
| tree | 72d1c0a7e1a68d08727b424bd26ae3410a97964f /src/main/java | |
| parent | a0c7aa1008f31e969fe868edf1f5408f3eaa959a (diff) | |
Add stubbed TypeScript code writer
Diffstat (limited to 'src/main/java')
2 files changed, 72 insertions, 0 deletions
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 +} |
