diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-08-29 10:07:04 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-08-29 10:07:04 +0100 |
| commit | a0c7aa1008f31e969fe868edf1f5408f3eaa959a (patch) | |
| tree | c6cba4fbe288b1542f83da0905360895fb290fca /src | |
| parent | fd608ec74299cba88f7af992069e07e3fd6b41d1 (diff) | |
Add stubbed generator for TypeScript types
Diffstat (limited to 'src')
4 files changed, 71 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java b/src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java index 2373626..9af101e 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java @@ -7,6 +7,7 @@ import org.zwobble.hobgoblin.compiler.output.generators.javatransient0.JavaTrans import org.zwobble.hobgoblin.compiler.output.generators.javatypes.JavaTypesGenerator; import org.zwobble.hobgoblin.compiler.output.generators.rusttransient0.RustTransient0Generator; import org.zwobble.hobgoblin.compiler.output.generators.rusttypes.RustTypesGenerator; +import org.zwobble.hobgoblin.compiler.output.generators.typescripttypes.TypescriptTypesGenerator; import org.zwobble.hobgoblin.compiler.sources.FileFragmentSource; import org.zwobble.json5.reader.Json5ObjectReader; import org.zwobble.sourcetext.SourceText; @@ -56,6 +57,9 @@ public record ProjectConfig( case RustTransient0Generator.NAME -> RustTransient0Generator.parseGeneratorConfig(projectRoot, generatorJson, langsJson); + case TypescriptTypesGenerator.NAME -> + TypescriptTypesGenerator.parseGeneratorConfig(projectRoot, generatorJson, langsJson); + default -> throw new UnknownGeneratorError( generatorName.value(), diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java new file mode 100644 index 0000000..ebc7166 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java @@ -0,0 +1,9 @@ +package org.zwobble.hobgoblin.compiler.output.generators.typescript; + +public class TypescriptGenerator { + private final TypescriptGeneratorConfig config; + + public TypescriptGenerator(TypescriptGeneratorConfig config) { + this.config = config; + } +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGeneratorConfig.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGeneratorConfig.java new file mode 100644 index 0000000..4026c14 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGeneratorConfig.java @@ -0,0 +1,11 @@ +package org.zwobble.hobgoblin.compiler.output.generators.typescript; + +import org.zwobble.json5.reader.Json5ObjectReader; + +public record TypescriptGeneratorConfig() { + public static TypescriptGeneratorConfig parseLangsConfig(Json5ObjectReader langsJson) { + var output = langsJson.getObject("typescript"); + + return new TypescriptGeneratorConfig(); + } +} diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescripttypes/TypescriptTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescripttypes/TypescriptTypesGenerator.java new file mode 100644 index 0000000..04278ea --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescripttypes/TypescriptTypesGenerator.java @@ -0,0 +1,47 @@ +package org.zwobble.hobgoblin.compiler.output.generators.typescripttypes; + +import org.zwobble.hobgoblin.compiler.ast.typed.TypedNamespaceNode; +import org.zwobble.hobgoblin.compiler.config.OutputConfig; +import org.zwobble.hobgoblin.compiler.output.generators.Generator; +import org.zwobble.hobgoblin.compiler.output.generators.typescript.TypescriptGenerator; +import org.zwobble.hobgoblin.compiler.output.generators.typescript.TypescriptGeneratorConfig; +import org.zwobble.hobgoblin.compiler.typechecker.TypesInfo; +import org.zwobble.json5.reader.Json5ObjectReader; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.List; + +public class TypescriptTypesGenerator implements Generator { + public static final String NAME = "typescript-types"; + + public static OutputConfig parseGeneratorConfig( + Path projectRoot, + Json5ObjectReader generatorJson, + Json5ObjectReader langsJson + ) { + return () -> { + var relativeOutputPath = generatorJson.getString("path").value(); + var outputPath = projectRoot.resolve(relativeOutputPath); + + var typescriptConfig = TypescriptGeneratorConfig.parseLangsConfig(langsJson); + + var typescriptGenerator = new TypescriptGenerator(typescriptConfig); + + return new TypescriptTypesGenerator(outputPath, typescriptGenerator); + }; + } + + private final Path outputPath; + private final TypescriptGenerator typescriptGenerator; + + public TypescriptTypesGenerator(Path outputPath, TypescriptGenerator typescriptGenerator) { + this.outputPath = outputPath; + this.typescriptGenerator = typescriptGenerator; + } + + @Override + public void generate(List<TypedNamespaceNode> namespaces, TypesInfo typesInfo) throws IOException { + + } +} |
