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/(?.*)\n/s, text) do %{"lede" => lede} -> lede _ -> text |> String.split() |> Enum.take(50) |> Enum.join(" ") end end end