API Reference

Chandra::Markdown->new(%opts)

Constructs a new Markdown widget. app is required. Injects the default stylesheet unless css => 0 is passed.

render($markdown)

Converts $markdown to an HTML string. Does not update the webview. Returns an empty string if $markdown is undef or ''.

my $html = $md->render("**bold**");  # => "<p><strong>bold</strong></p>\n"

set($markdown)

Renders $markdown and replaces the innerHTML of the target element. Returns $self for chaining.

$md->set("# New content");

append($markdown)

Renders $markdown and appends it to the target element's innerHTML. Returns $self for chaining.

$md->append("## Extra section\nMore text.");

render_dir($dir, %opts)

Scans $dir for .md files, registers a route on the app for each, and returns a <nav> HTML string of links.

my $nav = $md->render_dir('docs',
    recursive  => 1,
    base_route => '/docs',
    nav_id     => 'sidebar-nav',
    sort       => 'alpha',
    index      => 'index.md',
);

index.md is treated as the section root: its route is $base_route rather than $base_route/index.

_css()

Returns the embedded stylesheet string. Call $app->inject_css(Chandra::Markdown::_css()) if you want the styles without constructing a widget.