aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-23 10:16:09 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-23 10:16:09 +0000
commit9bbd81270311255f8c09e49e062ef4961368a4d2 (patch)
treee2a1fa39367990401a9fb37097a20f22a92a9567 /src/main/java
parentc0fb45c014d53d41f29ca47c4ea57f368e176182 (diff)
Extract TomlSyntaxConfigError.fromTomljError()
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/config/ProjectConfig.java9
-rw-r--r--src/main/java/org/shedlang/compiler/config/errors/TomlSyntaxConfigError.java17
2 files changed, 18 insertions, 8 deletions
diff --git a/src/main/java/org/shedlang/compiler/config/ProjectConfig.java b/src/main/java/org/shedlang/compiler/config/ProjectConfig.java
index 2a8cbd43..1eacf446 100644
--- a/src/main/java/org/shedlang/compiler/config/ProjectConfig.java
+++ b/src/main/java/org/shedlang/compiler/config/ProjectConfig.java
@@ -10,7 +10,6 @@ import org.tomlj.TomlTable;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
@@ -39,13 +38,7 @@ public record ProjectConfig(
private static ProjectConfig fromTomlParseResult(Path projectPath, TomlParseResult result, Source source) {
if (result.hasErrors()) {
var error = result.errors().get(0);
- var lines = source.contents().split("\n");
- var lineCharacterIndex = Arrays.stream(lines)
- .limit(error.position().line() - 1)
- .mapToInt(line -> line.length() + 1)
- .sum();
- var characterIndex = lineCharacterIndex + error.position().column() - 1;
- throw new TomlSyntaxConfigError(error.getMessage(), source.at(characterIndex, characterIndex));
+ throw TomlSyntaxConfigError.fromTomljError(error, source);
}
return fromToml(projectPath, result);
diff --git a/src/main/java/org/shedlang/compiler/config/errors/TomlSyntaxConfigError.java b/src/main/java/org/shedlang/compiler/config/errors/TomlSyntaxConfigError.java
index 5455cba2..b4edf660 100644
--- a/src/main/java/org/shedlang/compiler/config/errors/TomlSyntaxConfigError.java
+++ b/src/main/java/org/shedlang/compiler/config/errors/TomlSyntaxConfigError.java
@@ -1,8 +1,25 @@
package org.shedlang.compiler.config.errors;
import org.shedlang.compiler.sources.Source;
+import org.tomlj.TomlParseError;
+
+import java.util.Arrays;
public class TomlSyntaxConfigError extends ConfigError {
+ public static TomlSyntaxConfigError fromTomljError(
+ TomlParseError error,
+ Source fullSource
+ ) {
+ var lines = fullSource.contents().split("\n");
+ var lineCharacterIndex = Arrays.stream(lines)
+ .limit(error.position().line() - 1)
+ .mapToInt(line -> line.length() + 1)
+ .sum();
+ var characterIndex = lineCharacterIndex + error.position().column() - 1;
+ var source = fullSource.at(characterIndex, characterIndex);
+ return new TomlSyntaxConfigError(error.getMessage(), source);
+ }
+
public TomlSyntaxConfigError(String message, Source source) {
super(message, source);
}