2024-07-30 15:46:47 +00:00
|
|
|
defmodule JOL.Blog.Post do
|
2024-08-17 13:19:25 +00:00
|
|
|
@enforce_keys [:author, :title, :body, :tags, :date, :slug, :lede]
|
|
|
|
defstruct [:author, :draft, :title, :body, :tags, :date, :slug, :lede]
|
2024-07-30 15:46:47 +00:00
|
|
|
|
|
|
|
def build(_filename, attrs, body) do
|
2024-08-17 13:19:25 +00:00
|
|
|
struct!(
|
|
|
|
__MODULE__,
|
|
|
|
[author: "Jessica Phoenix Canady", body: body, lede: extract_lede(body)] ++
|
|
|
|
Map.to_list(attrs)
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
defp extract_lede(text) do
|
|
|
|
case Regex.named_captures(~r/(?<lede>.*)\n<!-- more -->/s, text) do
|
|
|
|
%{"lede" => lede} ->
|
|
|
|
lede
|
|
|
|
|
|
|
|
_ ->
|
|
|
|
text
|
|
|
|
|> String.split()
|
|
|
|
|> Enum.take(50)
|
|
|
|
|> Enum.join(" ")
|
|
|
|
end
|
2024-07-30 15:46:47 +00:00
|
|
|
end
|
|
|
|
end
|