defmodule Web.Paths do use Web, :html # there's duplication in here because `url/1/2/3` requires a compile time ~p def public_post_url(%Schema.Post{kind: :status} = status) do url(Web.Endpoint, ~p"/status/#{status}") end def public_post_url(%Schema.Post{kind: :blog} = blog) do if date = Core.Posts.publish_date(blog) do url(Web.Endpoint, ~p"/blog/#{date.year}/#{date.month}/#{date.day}/#{blog.slug}") end end def public_post_path(%Schema.Post{kind: :status} = status), do: public_status_path(status) def public_post_path(%Schema.Post{kind: :blog} = blog), do: public_blog_path(blog) def public_status_path(%Schema.Post{kind: :status} = status) do ~p"/status/#{status}" end def public_blog_path(%Schema.Post{kind: :blog} = blog) do if date = Core.Posts.publish_date(blog) do ~p"/blog/#{date.year}/#{date.month}/#{date.day}/#{blog.slug}" end end end