Sourcemeta Core 0.0.0
Loading...
Searching...
No Matches
Markdown

A growing implementation of Markdown-related utilities based on GitHub Flavored Markdown (GFM). More...

Classes

class  sourcemeta::core::MarkdownError

Functions

SOURCEMETA_CORE_MARKDOWN_EXPORT auto sourcemeta::core::markdown_to_html (const std::string_view input, const bool safe=true) -> std::string

Detailed Description

A growing implementation of Markdown-related utilities based on GitHub Flavored Markdown (GFM).

This functionality is included as follows:

#include <sourcemeta/core/markdown.h>

Class Documentation

◆ sourcemeta::core::MarkdownError

class sourcemeta::core::MarkdownError

An error that represents a Markdown conversion that would exceed one of the bounds on the size of its output

Inheritance diagram for sourcemeta::core::MarkdownError:

Public Member Functions

 MarkdownError (const char *message)
 Construct an error with the given message.
 MarkdownError (std::string message)=delete
 MarkdownError (std::string &&message)=delete
 MarkdownError (std::string_view message)=delete

Function Documentation

◆ markdown_to_html()

SOURCEMETA_CORE_MARKDOWN_EXPORT auto sourcemeta::core::markdown_to_html ( const std::string_view input,
const bool safe = true ) -> std::string

Convert a Markdown string to an HTML fragment using GitHub Flavored Markdown (GFM) with all standard extensions enabled (tables, autolinks, strikethrough, tag filtering, and task lists). Raw HTML and dangerous links are suppressed by default, so the result is safe to render from untrusted input. Passing a false safe argument lets raw HTML and unsafe links pass through unchanged, which must only be done for trusted input. The specification lets link references and short table rows expand to an output far larger than the input, so the conversion throws MarkdownError once the rendered link references expand past the larger of 16 times the input size and 1,048,576 bytes, or once a table inserts more than 524,288 empty cells. For example:

#include <sourcemeta/core/markdown.h>
#include <cassert>
const auto result{sourcemeta::core::markdown_to_html("Hello **world**")};
assert(result == "<p>Hello <strong>world</strong></p>\n");
SOURCEMETA_CORE_MARKDOWN_EXPORT auto markdown_to_html(const std::string_view input, const bool safe=true) -> std::string