Packages

phoenix_kit

1.7.49
1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib modules pages simple_renderer.ex
Raw

lib/modules/pages/simple_renderer.ex

defmodule PhoenixKit.Modules.Pages.SimpleRenderer do
@moduledoc """
Simple markdown rendering for Pages module.
Converts markdown files to HTML with metadata extraction.
"""
alias PhoenixKit.Modules.Pages.FileOperations
alias PhoenixKit.Modules.Pages.HtmlMetadata
@doc """
Renders a markdown file to HTML.
## Examples
iex> SimpleRenderer.render_file("/test.md")
{:ok, "<h1>Hello World</h1>"}
iex> SimpleRenderer.render_file("/missing.md")
{:error, :enoent}
"""
def render_file(relative_path) do
case FileOperations.read_file(relative_path) do
{:ok, content} ->
html = render_markdown(content)
{:ok, html}
error ->
error
end
end
@doc """
Renders a markdown file to HTML with metadata extraction.
Returns both the rendered HTML and the parsed metadata.
## Examples
iex> SimpleRenderer.render_file_with_metadata("/test.md")
{:ok, "<h1>Hello World</h1>", %{status: "published", ...}}
iex> SimpleRenderer.render_file_with_metadata("/missing.md")
{:error, :enoent}
"""
def render_file_with_metadata(relative_path) do
case FileOperations.read_file(relative_path) do
{:ok, content} ->
# Extract metadata
{metadata, content_without_metadata} =
case HtmlMetadata.parse(content) do
{:ok, metadata, stripped_content} ->
{metadata, stripped_content}
{:error, :no_metadata} ->
# No metadata found, use defaults
{HtmlMetadata.default_metadata(), content}
end
# Render markdown (without metadata block)
html = render_markdown(content_without_metadata)
{:ok, html, metadata}
error ->
error
end
end
@doc """
Converts markdown content to HTML.
## Examples
iex> SimpleRenderer.render_markdown("# Hello")
"<h1>Hello</h1>"
"""
def render_markdown(content) do
case Earmark.as_html(content) do
{:ok, html, _warnings} -> html
{:error, _html, errors} -> raise "Markdown parsing failed: #{inspect(errors)}"
end
end
end