fix: parser errors

This commit is contained in:
2026-04-25 13:17:40 +02:00
parent 00a997293b
commit 6702532fc9
4 changed files with 120 additions and 4 deletions

View File

@@ -79,10 +79,18 @@ defmodule BDS.Sidecar do
defp parse_scalar(key, value) when is_binary(key) and is_binary(value) do
trimmed = String.trim(value)
parsed = parse_generic_scalar(trimmed)
cond do
timestamp_key?(key) -> Persistence.parse_timestamp(trimmed) || parse_generic_scalar(trimmed)
true -> parse_generic_scalar(trimmed)
timestamp_key?(key) ->
if is_binary(parsed) do
Persistence.parse_timestamp(parsed) || parsed
else
parsed
end
true ->
parsed
end
end
@@ -94,6 +102,7 @@ defmodule BDS.Sidecar do
defp parse_generic_scalar("true"), do: true
defp parse_generic_scalar("false"), do: false
defp parse_generic_scalar("[]"), do: []
defp parse_generic_scalar(value) do
if Regex.match?(~r/^-?\d+$/, value) do
@@ -111,6 +120,14 @@ defmodule BDS.Sidecar do
|> String.replace("\\\\", "\\")
end
defp parse_string("'" <> rest) do
rest
|> String.trim_trailing("'")
|> String.replace("\\n", "\n")
|> String.replace("\\'", "'")
|> String.replace("\\\\", "\\")
end
defp parse_string(value), do: value
defp serialize_scalar(_key, value) when is_boolean(value) do