Make htmlescape function public (#300)

Co-authored-by: Berscheid <1885260+pantor@users.noreply.github.com>
This commit is contained in:
Andrew Kane
2025-04-13 02:31:15 -07:00
committed by GitHub
parent ca53920be2
commit 2d1f0d09e6
2 changed files with 38 additions and 32 deletions

View File

@@ -25,6 +25,25 @@
namespace inja {
/*!
@brief Escapes HTML
*/
inline std::string htmlescape(const std::string& data) {
std::string buffer;
buffer.reserve((unsigned int)(1.1 * data.size()));
for (size_t pos = 0; pos != data.size(); ++pos) {
switch (data[pos]) {
case '&': buffer.append("&amp;"); break;
case '\"': buffer.append("&quot;"); break;
case '\'': buffer.append("&apos;"); break;
case '<': buffer.append("&lt;"); break;
case '>': buffer.append("&gt;"); break;
default: buffer.append(&data[pos], 1); break;
}
}
return buffer;
}
/*!
* \brief Class for rendering a Template with data.
*/
@@ -63,22 +82,6 @@ class Renderer : public NodeVisitor {
return !data->empty();
}
static std::string htmlescape(const std::string& data) {
std::string buffer;
buffer.reserve((unsigned int)(1.1 * data.size()));
for (size_t pos = 0; pos != data.size(); ++pos) {
switch (data[pos]) {
case '&': buffer.append("&amp;"); break;
case '\"': buffer.append("&quot;"); break;
case '\'': buffer.append("&apos;"); break;
case '<': buffer.append("&lt;"); break;
case '>': buffer.append("&gt;"); break;
default: buffer.append(&data[pos], 1); break;
}
}
return buffer;
}
void print_data(const std::shared_ptr<json>& value) {
if (value->is_string()) {
if (config.html_autoescape) {

View File

@@ -2132,6 +2132,25 @@ public:
namespace inja {
/*!
@brief Escapes HTML
*/
inline std::string htmlescape(const std::string& data) {
std::string buffer;
buffer.reserve((unsigned int)(1.1 * data.size()));
for (size_t pos = 0; pos != data.size(); ++pos) {
switch (data[pos]) {
case '&': buffer.append("&amp;"); break;
case '\"': buffer.append("&quot;"); break;
case '\'': buffer.append("&apos;"); break;
case '<': buffer.append("&lt;"); break;
case '>': buffer.append("&gt;"); break;
default: buffer.append(&data[pos], 1); break;
}
}
return buffer;
}
/*!
* \brief Class for rendering a Template with data.
*/
@@ -2170,22 +2189,6 @@ class Renderer : public NodeVisitor {
return !data->empty();
}
static std::string htmlescape(const std::string& data) {
std::string buffer;
buffer.reserve((unsigned int)(1.1 * data.size()));
for (size_t pos = 0; pos != data.size(); ++pos) {
switch (data[pos]) {
case '&': buffer.append("&amp;"); break;
case '\"': buffer.append("&quot;"); break;
case '\'': buffer.append("&apos;"); break;
case '<': buffer.append("&lt;"); break;
case '>': buffer.append("&gt;"); break;
default: buffer.append(&data[pos], 1); break;
}
}
return buffer;
}
void print_data(const std::shared_ptr<json>& value) {
if (value->is_string()) {
if (config.html_autoescape) {