feat: persisting elements in filesystem
This commit is contained in:
29
lib/bds/frontmatter.ex
Normal file
29
lib/bds/frontmatter.ex
Normal file
@@ -0,0 +1,29 @@
|
||||
defmodule BDS.Frontmatter do
|
||||
@moduledoc false
|
||||
|
||||
def serialize_document(fields, body) when is_list(fields) do
|
||||
frontmatter =
|
||||
fields
|
||||
|> Enum.flat_map(&serialize_field/1)
|
||||
|> Enum.join("\n")
|
||||
|
||||
["---", frontmatter, "---", body || "", ""]
|
||||
|> Enum.join("\n")
|
||||
end
|
||||
|
||||
defp serialize_field({_key, nil}), do: []
|
||||
defp serialize_field({_key, ""}), do: []
|
||||
defp serialize_field({_key, false}), do: []
|
||||
|
||||
defp serialize_field({key, true}) do
|
||||
["#{key}: true"]
|
||||
end
|
||||
|
||||
defp serialize_field({key, values}) when is_list(values) do
|
||||
["#{key}:" | Enum.map(values, &" - #{&1}")]
|
||||
end
|
||||
|
||||
defp serialize_field({key, value}) do
|
||||
["#{key}: #{value}"]
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user