Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XmlComplianceUtil.cs
Go to the documentation of this file.
1using System.Text;
2
3namespace System.Xml;
4
5internal static class XmlComplianceUtil
6{
7 public static string NonCDataNormalize(string value)
8 {
9 int length = value.Length;
10 if (length <= 0)
11 {
12 return string.Empty;
13 }
14 int num = 0;
16 while (XmlCharType.IsWhiteSpace(value[num]))
17 {
18 num++;
19 if (num == length)
20 {
21 return " ";
22 }
23 }
24 int num2 = num;
25 while (num2 < length)
26 {
28 {
29 num2++;
30 continue;
31 }
32 int i;
33 for (i = num2 + 1; i < length && XmlCharType.IsWhiteSpace(value[i]); i++)
34 {
35 }
36 if (i == length)
37 {
38 if (stringBuilder == null)
39 {
40 return value.Substring(num, num2 - num);
41 }
42 stringBuilder.Append(value, num, num2 - num);
43 return stringBuilder.ToString();
44 }
45 if (i > num2 + 1 || value[num2] != ' ')
46 {
47 if (stringBuilder == null)
48 {
50 }
51 stringBuilder.Append(value, num, num2 - num);
52 stringBuilder.Append(' ');
53 num = i;
54 num2 = i;
55 }
56 else
57 {
58 num2++;
59 }
60 }
61 if (stringBuilder != null)
62 {
63 if (num < num2)
64 {
65 stringBuilder.Append(value, num, num2 - num);
66 }
67 return stringBuilder.ToString();
68 }
69 if (num > 0)
70 {
71 return value.Substring(num, length - num);
72 }
73 return value;
74 }
75
76 public static string CDataNormalize(string value)
77 {
78 int length = value.Length;
79 if (length <= 0)
80 {
81 return string.Empty;
82 }
83 int num = 0;
84 int num2 = 0;
86 while (num < length)
87 {
88 char c = value[num];
89 switch (c)
90 {
91 default:
92 num++;
93 break;
94 case '\t':
95 case '\n':
96 case '\r':
97 if (stringBuilder == null)
98 {
100 }
101 if (num2 < num)
102 {
103 stringBuilder.Append(value, num2, num - num2);
104 }
105 stringBuilder.Append(' ');
106 num = ((c != '\r' || num + 1 >= length || value[num + 1] != '\n') ? (num + 1) : (num + 2));
107 num2 = num;
108 break;
109 }
110 }
111 if (stringBuilder == null)
112 {
113 return value;
114 }
115 if (num > num2)
116 {
117 stringBuilder.Append(value, num2, num - num2);
118 }
119 return stringBuilder.ToString();
120 }
121
122 public static bool IsValidLanguageID(char[] value, int startPos, int length)
123 {
124 int num = length;
125 if (num < 2)
126 {
127 return false;
128 }
129 bool flag = false;
130 int num2 = startPos;
131 char c = value[num2];
132 if (XmlCharType.IsLetter(c))
133 {
135 {
136 if (num == 2)
137 {
138 return true;
139 }
140 num--;
141 num2++;
142 }
143 else if ('I' != c && 'i' != c && 'X' != c && 'x' != c)
144 {
145 return false;
146 }
147 if (value[num2] != '-')
148 {
149 return false;
150 }
151 num -= 2;
152 while (num-- > 0)
153 {
154 c = value[++num2];
155 if (XmlCharType.IsLetter(c))
156 {
157 flag = true;
158 continue;
159 }
160 if (c == '-' && flag)
161 {
162 flag = false;
163 continue;
164 }
165 return false;
166 }
167 if (flag)
168 {
169 return true;
170 }
171 }
172 return false;
173 }
174}
static bool IsLetter(char ch)
static bool IsWhiteSpace(char ch)
static bool IsValidLanguageID(char[] value, int startPos, int length)
static string NonCDataNormalize(string value)
static string CDataNormalize(string value)