class Renderer < Markly::Renderer::HTML
- Inherits from
Markly::Renderer::HTML
Renders project Markdown with support for Mermaid code blocks.
Definitions
def initialize(inline_code_resolver: nil, **options)
Initialize the project renderer.
Signature
-
parameter
inline_code_resolverProc | Nil Resolves language-prefixed inline code into an inline HTML node.
Implementation
def initialize(inline_code_resolver: nil, **options)
@inline_code_resolver = inline_code_resolver
super(**options)
end
def header(node)
Render a heading and expose its title to Pagefind for sub-results.
Signature
-
parameter
nodeMarkly::Node The heading node.
Implementation
def header(node)
block do
if @headings
out("</section>") if @section
@section = true
out(
"<section#{id_for(node)} data-pagefind-title=\"",
escape_html(node.to_plaintext.chomp),
"\">"
)
end
out("<h", node.header_level, "#{source_position(node)}>", :children, "</h", node.header_level, ">")
end
end
def code_block(node)
Render a fenced code block, including Mermaid diagrams.
Signature
-
parameter
nodeMarkly::Node The fenced code block node.
Implementation
def code_block(node)
language, _ = node.fence_info.split(/\s+/, 2)
if language == "mermaid"
block do
out(
"<div#{source_position(node)} class=\"mermaid\">",
escape_html(node.string_content),
"</div>"
)
end
else
super
end
end
def code(node)
Render inline code, resolving language-prefixed references when possible.
Signature
-
parameter
nodeMarkly::Node The inline code node.
Implementation
def code(node)
if @inline_code_resolver && (language = node.code_language)
out(@inline_code_resolver.call(node.string_content, language: language))
else
super
end
end