fix: parser errors
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user