33 lines
678 B
Elixir
33 lines
678 B
Elixir
defmodule SloaneSH.Write do
|
|
def page(ctx, src, data) do
|
|
path = md_to_html(src)
|
|
|
|
write(ctx, path, data)
|
|
end
|
|
|
|
def post(ctx, src, data) do
|
|
path = Path.join("posts", md_to_html(src))
|
|
|
|
write(ctx, path, data)
|
|
end
|
|
|
|
def write(ctx, name, data) do
|
|
path = Path.join(ctx.config.output_dir, name)
|
|
|
|
with :ok <- File.mkdir_p(Path.dirname(path)) do
|
|
File.write(path, data)
|
|
end
|
|
end
|
|
|
|
def md_to_html("index.md"), do: "index.html"
|
|
|
|
def md_to_html(path) do
|
|
dir = Path.dirname(path)
|
|
base = Path.basename(path, ".md")
|
|
|
|
case dir do
|
|
"." -> Path.join(base, "index.html")
|
|
_ -> Path.join([dir, base, "index.html"])
|
|
end
|
|
end
|
|
end
|