add markdown rendering

This commit is contained in:
Inhji 2023-03-13 03:26:39 +01:00
parent 93e07a8a79
commit 9e9b58f9a6
6 changed files with 28 additions and 5 deletions

View file

@ -92,8 +92,9 @@ defmodule ChiyaWeb do
alias Phoenix.LiveView.JS
# Custom functions
import ChiyaWeb.Format, only: [from_now: 1, from_now_naive: 1]
import ChiyaWeb.Format, only: [from_now: 1, pretty_date: 1]
alias ChiyaWeb.Markdown
# Routes generation with the ~p sigil
unquote(verified_routes())
end

View file

@ -29,7 +29,7 @@
<a href={~p"/n/#{note.slug}"}>
<.header>
<%= note.name %>
<:subtitle><%= note.published_at %></:subtitle>
<:subtitle><%= pretty_date(note.published_at) %></:subtitle>
</.header>
</a>
<% end %>

View file

@ -1,3 +1,8 @@
<.header>
<%= @note.name %>
<%= @note.name %>
<:subtitle><%= pretty_date(@note.published_at) %></:subtitle>
</.header>
<section class="prose mt-8">
<%= Markdown.render(@note.content) |> raw %>
</section>

14
lib/chiya_web/markdown.ex Normal file
View file

@ -0,0 +1,14 @@
defmodule ChiyaWeb.Markdown do
@options [
footnotes: true,
breaks: true,
escape: true
]
def render(markdown) do
markdown
|> Earmark.as_html!(@options)
end
end

View file

@ -53,7 +53,8 @@ defmodule Chiya.MixProject do
{:plug_cowboy, "~> 2.5"},
{:oban, "~> 2.14"},
{:waffle, "~> 1.1"},
{:waffle_ecto, "~> 0.0.12"}
{:waffle_ecto, "~> 0.0.12"},
{:earmark, "~> 1.4"}
]
end

View file

@ -9,6 +9,8 @@
"cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"},
"db_connection": {:hex, :db_connection, "2.4.3", "3b9aac9f27347ec65b271847e6baeb4443d8474289bd18c1d6f4de655b70c94d", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c127c15b0fa6cfb32eed07465e05da6c815b032508d4ed7c116122871df73c12"},
"decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"},
"earmark": {:hex, :earmark, "1.4.37", "56ce845c543393aa3f9b294c818c3d783452a4a67e4ab18c4303a954a8b59363", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "d86d5e12868db86d5321b00e62a4bbcb4150346e4acc9a90a041fb188a5cb106"},
"earmark_parser": {:hex, :earmark_parser, "1.4.31", "a93921cdc6b9b869f519213d5bc79d9e218ba768d7270d46fdcf1c01bacff9e2", [:mix], [], "hexpm", "317d367ee0335ef037a87e46c91a2269fef6306413f731e8ec11fc45a7efd059"},
"ecto": {:hex, :ecto, "3.9.4", "3ee68e25dbe0c36f980f1ba5dd41ee0d3eb0873bccae8aeaf1a2647242bffa35", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "de5f988c142a3aa4ec18b85a4ec34a2390b65b24f02385c1144252ff6ff8ee75"},
"ecto_sql": {:hex, :ecto_sql, "3.9.2", "34227501abe92dba10d9c3495ab6770e75e79b836d114c41108a4bf2ce200ad5", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9.2", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "1eb5eeb4358fdbcd42eac11c1fbd87e3affd7904e639d77903c1358b2abd3f70"},
"elixir_make": {:hex, :elixir_make, "0.7.5", "784cc00f5fa24239067cc04d449437dcc5f59353c44eb08f188b2b146568738a", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "c3d63e8d5c92fa3880d89ecd41de59473fa2e83eeb68148155e25e8b95aa2887"},