20 lines
477 B
Elixir
20 lines
477 B
Elixir
defmodule JOL.Blog.Parser do
|
|
# Parses blog posts.
|
|
def parse(_path, content) do
|
|
%{"attrs" => attrs, "body" => body} =
|
|
Regex.named_captures(~r/\+\+\+\n(?<attrs>.*)\n\+\+\+\n\n(?<body>.*)/s, content)
|
|
|
|
{:ok, toml_attrs} = Toml.decode(attrs)
|
|
|
|
parsed_attrs = %{
|
|
title: toml_attrs["title"],
|
|
draft: toml_attrs["draft"],
|
|
tags: toml_attrs["taxonomies"]["tags"]
|
|
}
|
|
|
|
parsed_body = String.trim(body)
|
|
|
|
{parsed_attrs, parsed_body}
|
|
end
|
|
end
|