7#include <QtCore/qglobal.h>
9#if !defined(QT_NO_EXCEPTIONS) && !defined(INJA_NOEXCEPTION) && !defined(JSON_NOEXCEPTION)
10 && (__EXCEPTIONS
|| _CPPUNWIND)
11# define QDOC_TEMPLATE_LIBS_THROW 1
13# define QDOC_TEMPLATE_LIBS_THROW 0
20[[noreturn]]
void qdocFatalTemplateRenderError(
const char *what);
23# define INJA_THROW(exception)
24 QT_PREPEND_NAMESPACE(qdocFatalTemplateRenderError)((exception).what())
25# define JSON_THROW_USER(exception)
26 QT_PREPEND_NAMESPACE(qdocFatalTemplateRenderError)((exception).what())
31#include <inja/inja.hpp>
47 using IncludeCallback = std::function<std::optional<QString>(
const QString &name)>;
61 using RenderResult = std::variant<QString, RenderFailure>;
63 static QString renderErrorText(
const RenderContext &context,
const QString &message);
65 static nlohmann::json toInjaJson(
const QJsonValue &value);
66 static nlohmann::json toInjaJson(
const QJsonObject &obj);
67 static nlohmann::json toInjaJson(
const QJsonArray &array);
69 static RenderResult render(
const QString &templateStr,
const QJsonObject &data,
70 const RenderContext &context = { });
71 static RenderResult render(
const QString &templateStr,
const QJsonObject &data,
72 const IncludeCallback &includeCallback,
73 const RenderContext &context = { });
74 static RenderResult renderFile(
const QString &templatePath,
const QJsonObject &data,
75 const RenderContext &context = { });
78 InjaBridge() =
default;
static std::string renderSignatureSpans(const nlohmann::json &spans, const QString &format)
static std::string escapeHtml(const std::string &input)
static void registerCallbacks(inja::Environment &env, const QString &format)
static InjaBridge::RenderResult renderWithPolicy(const InjaBridge::RenderContext &context, const std::function< QString()> &render)
static std::string renderSpanMarkdown(const nlohmann::json &s)
static std::string renderLinkSpan(const std::string &text, const std::string &href, bool hasHref, bool isMarkdown)
#define QDOC_TEMPLATE_LIBS_THROW