JOL/lib/jol/blog/post.ex

26 lines
623 B
Elixir

defmodule JOL.Blog.Post do
@enforce_keys [:author, :title, :body, :tags, :date, :slug, :lede]
defstruct [:author, :draft, :title, :body, :tags, :date, :slug, :lede]
def build(_filename, attrs, body) do
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
end
end