Current section
Files
Jump to
Current section
Files
lib/panpipe/pandoc/conversion.ex
defprotocol Panpipe.Pandoc.Conversion do
@moduledoc !"""
A protocol for conversion of `Panpipe.AST.Node`s or strings to any format supported by Pandoc.
"""
def convert(source, opts)
end
defmodule Panpipe.Pandoc.Conversion.Utils do
@moduledoc false
def post_process(result, source, opts) do
if Keyword.get(opts, :remove_trailing_newline, remove_trailing_newline?(source)) do
String.replace(result, ~r/\n$/, "")
else
result
end
end
defp remove_trailing_newline?(%node_type{}), do: node_type.inline?()
defp remove_trailing_newline?(_), do: false
end
defimpl Panpipe.Pandoc.Conversion, for: BitString do
def convert(source, opts) do
with {:ok, result} <- Panpipe.Pandoc.call(source, opts) do
Panpipe.Pandoc.Conversion.Utils.post_process(result, source, opts)
else
_ -> nil
end
end
end