lib/plugin/markdown.ex

defmodule Dragon.Plugin.Markdown do
  @moduledoc """
  Dragon markdown plugin
  """
  @behaviour Dragon.Plugin

  @impl Dragon.Plugin
  def run(_, _, path, _, content) do
    case Path.extname(path) do
      ".md" ->
        newname = Path.rootname(path) <> ".html"

        case Earmark.as_html(content, escape: false) do
          {:ok, content, _} -> {:ok, newname, content}
          {:error, _ast, error} -> {:error, error}
        end

      _ ->
        {:ok, path, content}
    end
  end
end