BareGit
#pragma once

#include <string>

#include <mw/error.hpp>

/// Trusted HTML produced only by the validated Markdown renderer.
class RenderedHtml
{
public:
    /// Construct a trusted fragment from validated renderer output.
    explicit RenderedHtml(std::string value);

    /// Return the trusted HTML fragment.
    const std::string& value() const;

private:
    std::string value_;
};

/// Render MacroDown documents while rejecting unsafe URLs and raw HTML.
class MarkdownRenderer
{
public:
    /// Validate and render one Markdown document.
    mw::E<RenderedHtml> render(const std::string& source) const;
};