GemtextToHTML

Render Gemtext as HTML.

Phoenix function components are used to transform individual Gemtext elements to HTML. Simply implement the GemtextToHTML.Components behaviour and pass it to the :components option of render/2.

Example

First, define a callback module to render the components.

defmodule MyApp.MyComponents do
  @behaviour GemtextToHTML.Components
  import Phoenix.Component

  def h1(assigns) do
    ~H"""
    <h1 class="text-lg font-bold"><%= @text %></h1>
    """
  end

  # ...and so on...
end

Then, pass that module as the :components option when rendering the Gemtext.

gemtext = """
# Hello, world

* this is a list
* indeed

pretty neat
"""

GemtextToHTML.render_to_string(gemtext, components: MyApp.MyComponents)
# => "<h1 class="text-lg font-bold">Hello, world</h1>" <> ...

Compatability

Phoenix LiveView 0.18.x or greater is required.

Installation

The package can be installed by adding gemtext_to_html to your list of dependencies in mix.exs:

def deps do
  [
    {:gemtext_to_html, "~> 0.1.0"}
  ]
end