Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ EncodeName() [1/2]

static string System.Xml.XmlConvert.EncodeName ( string name,
bool first,
bool local )
inlinestaticprivate

Definition at line 138 of file XmlConvert.cs.

139 {
140 if (string.IsNullOrEmpty(name))
141 {
142 return name;
143 }
145 int length = name.Length;
146 int num = 0;
147 int i = 0;
148 int num2 = name.IndexOf('_');
150 IEnumerator enumerator = null;
151 if (num2 >= 0)
152 {
153 if (s_encodeCharPattern == null)
154 {
155 s_encodeCharPattern = new Regex("(?<=_)[Xx]([0-9a-fA-F]{4}|[0-9a-fA-F]{8})_");
156 }
158 enumerator = matchCollection.GetEnumerator();
159 }
160 int num3 = -1;
161 if (enumerator != null && enumerator.MoveNext())
162 {
163 Match match = (Match)enumerator.Current;
164 num3 = match.Index - 1;
165 }
166 if (first && ((!XmlCharType.IsStartNCNameCharXml4e(name[0]) && (local || (!local && name[0] != ':'))) || num3 == 0))
167 {
168 if (stringBuilder == null)
169 {
171 }
172 stringBuilder.Append("_x");
173 if (length > 1 && XmlCharType.IsHighSurrogate(name[0]) && XmlCharType.IsLowSurrogate(name[1]))
174 {
175 int highChar = name[0];
176 int lowChar = name[1];
177 int value = XmlCharType.CombineSurrogateChar(lowChar, highChar);
181 handler.AppendFormatted(value, "X8");
182 stringBuilder3.Append(ref handler);
183 i++;
184 num = 2;
185 }
186 else
187 {
191 handler2.AppendFormatted((int)name[0], "X4");
193 num = 1;
194 }
195 stringBuilder.Append('_');
196 i++;
197 if (num3 == 0 && enumerator.MoveNext())
198 {
199 Match match2 = (Match)enumerator.Current;
200 num3 = match2.Index - 1;
201 }
202 }
203 for (; i < length; i++)
204 {
205 if ((local && !XmlCharType.IsNCNameCharXml4e(name[i])) || (!local && !XmlCharType.IsNameCharXml4e(name[i])) || num3 == i)
206 {
207 if (stringBuilder == null)
208 {
210 }
211 if (num3 == i && enumerator.MoveNext())
212 {
213 Match match3 = (Match)enumerator.Current;
214 num3 = match3.Index - 1;
215 }
216 stringBuilder.Append(name, num, i - num);
217 stringBuilder.Append("_x");
218 if (length > i + 1 && XmlCharType.IsHighSurrogate(name[i]) && XmlCharType.IsLowSurrogate(name[i + 1]))
219 {
220 int highChar2 = name[i];
221 int lowChar2 = name[i + 1];
222 int value2 = XmlCharType.CombineSurrogateChar(lowChar2, highChar2);
228 num = i + 2;
229 i++;
230 }
231 else
232 {
236 handler4.AppendFormatted((int)name[i], "X4");
238 num = i + 1;
239 }
240 stringBuilder.Append('_');
241 }
242 }
243 if (num == 0)
244 {
245 return name;
246 }
247 if (num < length)
248 {
249 stringBuilder.Append(name, num, length - num);
250 }
251 return stringBuilder.ToString();
252 }
static volatile Regex s_encodeCharPattern
Definition XmlConvert.cs:16

References System.Text.StringBuilder.AppendInterpolatedStringHandler.AppendFormatted(), System.Xml.XmlCharType.CombineSurrogateChar(), System.Xml.Dictionary, System.Text.RegularExpressions.i, System.Xml.XmlCharType.IsHighSurrogate(), System.Xml.XmlCharType.IsLowSurrogate(), System.Xml.XmlCharType.IsNameCharXml4e(), System.Xml.XmlCharType.IsNCNameCharXml4e(), System.Xml.XmlCharType.IsStartNCNameCharXml4e(), System.length, System.Text.StringBuilder.Length, System.match, System.Text.RegularExpressions.name, System.Xml.XmlConvert.s_encodeCharPattern, and System.value.