Packages
tableau
0.16.0
0.30.0
0.29.0
0.28.0
0.27.1
0.27.0
0.26.1
0.26.0
0.25.1
0.25.0
0.24.1
0.24.0
0.23.1
0.23.0
0.22.0
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.1
0.17.0
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.1
0.7.0
0.6.0
0.5.0
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
Static site generator for elixir
Current section
Files
Jump to
Current section
Files
lib/tableau/extensions/post_extension/posts.ex
defmodule Tableau.PostExtension.Posts do
@moduledoc false
alias Tableau.Extension.Common
@config Map.new(Application.compile_env(:tableau, Tableau.PostExtension, %{}))
def __tableau_type__, do: :pages
def pages(opts \\ []) do
opts
|> posts()
|> Enum.map(fn post ->
%{
type: :page,
parent: post.layout,
permalink: post.permalink,
template: post.body,
opts: post
}
end)
end
def posts(opts \\ []) do
{:ok, config} =
Tableau.PostExtension.Config.new(@config)
opts = Keyword.put_new(opts, :html_converter, Tableau.PostExtension.Posts.HTMLConverter)
config.dir
|> Path.join("**/*.md")
|> Common.paths()
|> Common.entries(Tableau.PostExtension.Posts.Post, Tableau.PostExtension.Posts.Post, opts)
|> Enum.sort_by(& &1.date, {:desc, DateTime})
|> then(fn posts ->
if config.future do
posts
else
Enum.reject(posts, &DateTime.after?(&1.date, DateTime.utc_now()))
end
end)
end
end