summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java28
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java20
2 files changed, 15 insertions, 33 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 ee70dba..6f8eb4e 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/config/ProjectConfig.java
@@ -2,11 +2,7 @@ package org.zwobble.hobgoblin.compiler.config;
import org.zwobble.hobgoblin.compiler.output.generators.Generator;
import org.zwobble.hobgoblin.compiler.output.generators.javatypes.JavaTypesGenerator;
-import org.zwobble.json5.parser.Json5Parser;
-import org.zwobble.json5.values.Json5Array;
-import org.zwobble.json5.values.Json5Object;
-import org.zwobble.json5.values.Json5String;
-import org.zwobble.json5.values.Json5Value;
+import org.zwobble.json5.reader.Json5ObjectReader;
import org.zwobble.sourcetext.SourceText;
import java.io.IOException;
@@ -26,29 +22,19 @@ public record ProjectConfig(
}
private static ProjectConfig fromSourceText(Path projectRoot, SourceText sourceText) {
- return fromJson5(projectRoot, Json5Parser.parse(sourceText));
+ return fromJson5(projectRoot, Json5ObjectReader.parse(sourceText));
}
- private static ProjectConfig fromJson5(Path projectRoot, Json5Value document) {
- if (!(document instanceof Json5Object documentObject)) {
- throw new UnsupportedOperationException("TODO");
- }
-
- var outputsValue = documentObject.getValue("outputs").orElseThrow();
- if (!(outputsValue instanceof Json5Array outputsArray)) {
- throw new UnsupportedOperationException("TODO");
- }
+ private static ProjectConfig fromJson5(Path projectRoot, Json5ObjectReader document) {
+ var outputsJson = document.getArrayOfObjects("outputs").orElseThrow();
var outputs = new ArrayList<OutputConfig>();
- for (var outputValue : outputsArray.elements()) {
- if (!(outputValue instanceof Json5Object outputObject)) {
- throw new UnsupportedOperationException("TODO");
- }
- var generatorName = (Json5String) outputObject.getValue("generator").orElseThrow();
+ for (var outputJson : outputsJson) {
+ var generatorName = outputJson.getString("generator");
var output = switch (generatorName.value()) {
case JavaTypesGenerator.NAME ->
- JavaTypesGenerator.parseOutputConfig(projectRoot, outputObject);
+ JavaTypesGenerator.parseOutputConfig(projectRoot, outputJson);
default ->
throw new UnsupportedOperationException("TODO");
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 d585baf..95b33f6 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
@@ -9,9 +9,7 @@ import org.zwobble.hobgoblin.compiler.output.lang.java.JavaWriter;
import org.zwobble.hobgoblin.compiler.output.lang.java.ast.*;
import org.zwobble.hobgoblin.compiler.typechecker.TypesInfo;
import org.zwobble.hobgoblin.compiler.types.*;
-import org.zwobble.json5.values.Json5Array;
-import org.zwobble.json5.values.Json5Object;
-import org.zwobble.json5.values.Json5String;
+import org.zwobble.json5.reader.Json5ObjectReader;
import java.io.File;
import java.io.IOException;
@@ -27,25 +25,23 @@ public class JavaTypesGenerator implements Generator {
Map.entry(NativeTypes.LIST_INNER, JavaNativeTypeConfig.of(JavaTypeRef.LIST, new JavaStaticMethodCall(JavaTypeRef.LIST, "of", List.of())))
);
- public static OutputConfig parseOutputConfig(Path projectRoot, Json5Object output) {
+ public static OutputConfig parseOutputConfig(Path projectRoot, Json5ObjectReader output) {
return () -> {
- var relativeOutputPath = ((Json5String) output.getValue("path").orElseThrow()).value();
+ var relativeOutputPath = output.getString("path").value();
var outputPath = projectRoot.resolve(relativeOutputPath);
- var packageName = ((Json5String) output.getValue("packageName").orElseThrow()).value();
+ var packageName = output.getString("packageName").value();
var nativeTypeConfigs = new HashMap<SimpleNativeType, JavaNativeTypeConfig>(DEFAULT_NATIVE_TYPE_CONFIGS);
- output.getValue("nativeTypes").ifPresent(nativeTypesJson -> {
- for (var nativeTypeJson : ((Json5Array) nativeTypesJson).elements()) {
- var nativeTypeJsonObject = (Json5Object) nativeTypeJson;
-
- var hobgoblinTypeString = ((Json5String) nativeTypeJsonObject.getValue("hobgoblin").orElseThrow()).value();
+ output.getArrayOfObjects("nativeTypes").ifPresent(nativeTypesJson -> {
+ for (var nativeTypeJson : nativeTypesJson) {
+ var hobgoblinTypeString = nativeTypeJson.getString("hobgoblin").value();
var hobgoblinTypeParts = Arrays.asList(hobgoblinTypeString.split("\\."));
var hobgoblinType = new SimpleNativeType(
new NamespaceName(hobgoblinTypeParts.subList(0, hobgoblinTypeParts.size() - 1)),
hobgoblinTypeParts.getLast()
);
- var javaTypeString = ((Json5String) nativeTypeJsonObject.getValue("java").orElseThrow()).value();
+ var javaTypeString = nativeTypeJson.getString("java").value();
var javaTypeParts = Arrays.asList(javaTypeString.split("\\."));
var javaTypeRef = JavaTypeRef.topLevel(javaTypeParts.subList(0, javaTypeParts.size() - 1), javaTypeParts.getLast());