diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-12-23 10:16:09 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-12-23 10:16:09 +0000 |
| commit | 9bbd81270311255f8c09e49e062ef4961368a4d2 (patch) | |
| tree | e2a1fa39367990401a9fb37097a20f22a92a9567 /src/main/java | |
| parent | c0fb45c014d53d41f29ca47c4ea57f368e176182 (diff) | |
Extract TomlSyntaxConfigError.fromTomljError()
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/config/ProjectConfig.java | 9 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/config/errors/TomlSyntaxConfigError.java | 17 |
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); } |
