13 static void vecprint(std::vector<char> *out,
char c)
18 static void vecprint(std::vector<char> *out,
char const *s)
20 out->insert(out->end(), s, s + strlen(s));
23 static std::string_view
to_string(std::vector<char>
const &vec)
26 return {vec.data(), vec.size()};
31 static void html_encode_(
char const *ptr,
char const *end,
bool utf8through, std::vector<char> *vec)
57 if (c < 0x80 ? (c < 0x20 || c ==
'\'') : !utf8through) {
59 sprintf(tmp,
"&#%u;", c);
68 static void html_decode_(
char const *ptr,
char const *end, std::vector<char> *vec)
74 char const *next = strchr(ptr,
';');
78 std::string t(ptr, next);
80 c = atoi(t.c_str() + 1);
82 }
else if (t ==
"amp") {
84 }
else if (t ==
"lt") {
86 }
else if (t ==
"gt") {
88 }
else if (t ==
"quot") {
90 }
else if (t ==
"apos") {
100 static std::string
html_encode(
char const *ptr,
char const *end,
bool utf8through)
102 std::vector<char> vec;
103 vec.reserve((end - ptr) * 2);
110 std::vector<char> vec;
111 vec.reserve((end - ptr) * 2);
116 static std::string
html_encode(
char const *ptr,
size_t len,
bool utf8through)
136 static std::string
html_encode(std::string_view
const &str,
bool utf8through)
138 char const *begin = str.data();
139 char const *end = begin + str.size();
140 char const *ptr = begin;
142 int c = (
unsigned char)*ptr;
143 if (isspace(c) || strchr(
"&<>\"\'", c)) {
149 return (std::string)str;
151 std::vector<char> vec;
152 vec.reserve(str.size() * 2);
153 vec.insert(vec.end(), begin, ptr);
156 end = begin + vec.size();
157 return std::string(begin, end);
162 char const *begin = str.data();
163 char const *end = begin + str.size();
164 char const *ptr = begin;
166 int c = (
unsigned char)*ptr;
173 return (std::string)str;
175 std::vector<char> vec;
176 vec.reserve(str.size() * 2);
177 vec.insert(vec.end(), begin, ptr);
180 end = begin + vec.size();
181 return std::string(begin, end);
186 static inline std::string
html_encode(
char const *ptr,
char const *end,
bool utf8through =
true)
191 static inline std::string
html_decode(
char const *ptr,
char const *end)
196 static inline std::string
html_encode(
char const *ptr,
size_t len,
bool utf8through =
true)
201 static inline std::string
html_decode(
char const *ptr,
size_t len)
206 static inline std::string
html_encode(
char const *ptr,
bool utf8through =
true)
216 static inline std::string
html_encode(std::string_view
const &str,
bool utf8through =
true)
221 static inline std::string
html_decode(std::string_view
const &str)
Definition: htmlencode.h:10
static void vecprint(std::vector< char > *out, char const *s)
Definition: htmlencode.h:18
static std::string html_encode(std::string_view const &str, bool utf8through)
Definition: htmlencode.h:136
static std::string html_decode(char const *ptr, char const *end)
Definition: htmlencode.h:108
static std::string_view to_string(std::vector< char > const &vec)
Definition: htmlencode.h:23
static std::string html_encode(char const *ptr, size_t len, bool utf8through)
Definition: htmlencode.h:116
static std::string html_decode(std::string_view const &str)
Definition: htmlencode.h:160
static void vecprint(std::vector< char > *out, char c)
Definition: htmlencode.h:13
static std::string html_decode(char const *ptr)
Definition: htmlencode.h:131
static std::string html_encode(char const *ptr, char const *end, bool utf8through)
Definition: htmlencode.h:100
static void html_decode_(char const *ptr, char const *end, std::vector< char > *vec)
Definition: htmlencode.h:68
static std::string html_encode(char const *ptr, bool utf8through)
Definition: htmlencode.h:126
static std::string html_decode(char const *ptr, size_t len)
Definition: htmlencode.h:121
static void html_encode_(char const *ptr, char const *end, bool utf8through, std::vector< char > *vec)
Definition: htmlencode.h:31
static std::string html_encode(char const *ptr, char const *end, bool utf8through=true)
Definition: htmlencode.h:186
static std::string html_decode(char const *ptr, char const *end)
Definition: htmlencode.h:191