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

@@ -102,13 +102,18 @@ defmodule BDS.Frontmatter 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)
if is_binary(parsed) do
Persistence.parse_timestamp(parsed) || parsed
else
parsed
end
true ->
parse_generic_scalar(trimmed)
parsed
end
end
@@ -120,6 +125,7 @@ defmodule BDS.Frontmatter 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
@@ -137,6 +143,14 @@ defmodule BDS.Frontmatter 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