-
Notifications
You must be signed in to change notification settings - Fork 2
/
Common.cpp
82 lines (72 loc) · 1.28 KB
/
Common.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "Common.h"
// Escape \ to \\ and ' to \'.
string EscapeSingleQuotes(const string& S)
{
string Ret;
for (unsigned int i = 0; i < S.length(); ++i)
{
switch (S[i])
{
case '\\':
Ret += "\\\\";
break;
case '\'':
Ret += "\\'";
break;
default:
Ret += S[i];
break;
}
}
return Ret;
}
// HTML escape.
string HTMLEscape(const string& S)
{
string Ret;
for (unsigned int i = 0; i < S.length(); ++i)
{
if (isalnum(S[i]) || S[i] == ' ' || S[i] == '.' || S[i] == '/' || S[i] == ':'
|| S[i] == '_' || S[i] == '-' // TODO: Find safe/unsafe ones.
|| static_cast<unsigned char>(S[i]) >= 128) // TODO: Check this (for utf8).
{
Ret += S[i];
}
else
{
Ret += "&#" + UItoS(static_cast<unsigned char>(S[i])) + ";";
}
}
return Ret;
}
// Attribute escape.
string AttributeEscape(const string& S)
{
string Ret;
// TODO: Check.
for (unsigned int i = 0; i < S.length(); ++i)
{
switch (S[i])
{
case '"':
Ret += """;
break;
case '\'':
Ret += "'";
break;
case '&':
Ret += "&";
break;
case '<':
Ret += "<";
break;
case '>':
Ret += ">";
break;
default:
Ret += S[i];
break;
}
}
return Ret;
}