diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-12-23 12:00:42 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-12-23 12:00:42 +0000 |
| commit | 5e54269bed1266534435f54c950fb7b9645dff24 (patch) | |
| tree | 1c13a46a758d3151f70d1d4b165f87fa95fbfe4f /src/main/java | |
| parent | 31fc64bc31b43c5dcddbe263a38645d146fc4e5e (diff) | |
Add TomlTableWithSource.getLongOrNone()
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/config/toml/TomlTableWithSource.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/config/toml/TomlTableWithSource.java b/src/main/java/org/shedlang/compiler/config/toml/TomlTableWithSource.java index 725d510a..d6ac3ba8 100644 --- a/src/main/java/org/shedlang/compiler/config/toml/TomlTableWithSource.java +++ b/src/main/java/org/shedlang/compiler/config/toml/TomlTableWithSource.java @@ -12,6 +12,7 @@ import org.tomlj.TomlTable; import java.text.MessageFormat; import java.util.List; import java.util.Optional; +import java.util.OptionalLong; import java.util.stream.IntStream; public record TomlTableWithSource( @@ -149,6 +150,26 @@ public record TomlTableWithSource( ); } + public OptionalLong getLongOrNone(String key) { + var value = table.get(key); + var valuePosition = table.inputPositionOf(key); + + if (value == null) { + return OptionalLong.empty(); + } + + if (value instanceof Long valueLong) { + return OptionalLong.of(valueLong); + } + + throw new UnexpectedTypeConfigError( + path.plusKey(key), + "a long", + value.getClass(), + TomlSource.sourceAtTomlPosition(fullSource, valuePosition) + ); + } + public long getLong(String key) { var value = table.get(key); var valuePosition = table.inputPositionOf(key); |
