Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XmlCustomFormatter.cs
Go to the documentation of this file.
4using System.Text;
6
8
9internal static class XmlCustomFormatter
10{
12
13 private static readonly string[] s_allDateTimeFormats = new string[65]
14 {
15 "yyyy-MM-ddTHH:mm:ss.fffffffzzzzzz", "yyyy", "---dd", "---ddZ", "---ddzzzzzz", "--MM-dd", "--MM-ddZ", "--MM-ddzzzzzz", "--MM--", "--MM--Z",
16 "--MM--zzzzzz", "yyyy-MM", "yyyy-MMZ", "yyyy-MMzzzzzz", "yyyyzzzzzz", "yyyy-MM-dd", "yyyy-MM-ddZ", "yyyy-MM-ddzzzzzz", "HH:mm:ss", "HH:mm:ss.f",
17 "HH:mm:ss.ff", "HH:mm:ss.fff", "HH:mm:ss.ffff", "HH:mm:ss.fffff", "HH:mm:ss.ffffff", "HH:mm:ss.fffffff", "HH:mm:ssZ", "HH:mm:ss.fZ", "HH:mm:ss.ffZ", "HH:mm:ss.fffZ",
18 "HH:mm:ss.ffffZ", "HH:mm:ss.fffffZ", "HH:mm:ss.ffffffZ", "HH:mm:ss.fffffffZ", "HH:mm:sszzzzzz", "HH:mm:ss.fzzzzzz", "HH:mm:ss.ffzzzzzz", "HH:mm:ss.fffzzzzzz", "HH:mm:ss.ffffzzzzzz", "HH:mm:ss.fffffzzzzzz",
19 "HH:mm:ss.ffffffzzzzzz", "HH:mm:ss.fffffffzzzzzz", "yyyy-MM-ddTHH:mm:ss", "yyyy-MM-ddTHH:mm:ss.f", "yyyy-MM-ddTHH:mm:ss.ff", "yyyy-MM-ddTHH:mm:ss.fff", "yyyy-MM-ddTHH:mm:ss.ffff", "yyyy-MM-ddTHH:mm:ss.fffff", "yyyy-MM-ddTHH:mm:ss.ffffff", "yyyy-MM-ddTHH:mm:ss.fffffff",
20 "yyyy-MM-ddTHH:mm:ssZ", "yyyy-MM-ddTHH:mm:ss.fZ", "yyyy-MM-ddTHH:mm:ss.ffZ", "yyyy-MM-ddTHH:mm:ss.fffZ", "yyyy-MM-ddTHH:mm:ss.ffffZ", "yyyy-MM-ddTHH:mm:ss.fffffZ", "yyyy-MM-ddTHH:mm:ss.ffffffZ", "yyyy-MM-ddTHH:mm:ss.fffffffZ", "yyyy-MM-ddTHH:mm:sszzzzzz", "yyyy-MM-ddTHH:mm:ss.fzzzzzz",
21 "yyyy-MM-ddTHH:mm:ss.ffzzzzzz", "yyyy-MM-ddTHH:mm:ss.fffzzzzzz", "yyyy-MM-ddTHH:mm:ss.ffffzzzzzz", "yyyy-MM-ddTHH:mm:ss.fffffzzzzzz", "yyyy-MM-ddTHH:mm:ss.ffffffzzzzzz"
22 };
23
24 private static readonly string[] s_allDateFormats = new string[17]
25 {
26 "yyyy-MM-ddzzzzzz", "yyyy-MM-dd", "yyyy-MM-ddZ", "yyyy", "---dd", "---ddZ", "---ddzzzzzz", "--MM-dd", "--MM-ddZ", "--MM-ddzzzzzz",
27 "--MM--", "--MM--Z", "--MM--zzzzzz", "yyyy-MM", "yyyy-MMZ", "yyyy-MMzzzzzz", "yyyyzzzzzz"
28 };
29
30 private static readonly string[] s_allTimeFormats = new string[24]
31 {
32 "HH:mm:ss.fffffffzzzzzz", "HH:mm:ss", "HH:mm:ss.f", "HH:mm:ss.ff", "HH:mm:ss.fff", "HH:mm:ss.ffff", "HH:mm:ss.fffff", "HH:mm:ss.ffffff", "HH:mm:ss.fffffff", "HH:mm:ssZ",
33 "HH:mm:ss.fZ", "HH:mm:ss.ffZ", "HH:mm:ss.fffZ", "HH:mm:ss.ffffZ", "HH:mm:ss.fffffZ", "HH:mm:ss.ffffffZ", "HH:mm:ss.fffffffZ", "HH:mm:sszzzzzz", "HH:mm:ss.fzzzzzz", "HH:mm:ss.ffzzzzzz",
34 "HH:mm:ss.fffzzzzzz", "HH:mm:ss.ffffzzzzzz", "HH:mm:ss.fffffzzzzzz", "HH:mm:ss.ffffffzzzzzz"
35 };
36
48
49 [return: NotNullIfNotNull("value")]
50 internal static string FromDefaultValue(object value, string formatter)
51 {
52 if (value == null)
53 {
54 return null;
55 }
57 if (type == typeof(DateTime))
58 {
59 switch (formatter)
60 {
61 case "DateTime":
63 case "Date":
64 return FromDate((DateTime)value);
65 case "Time":
66 return FromTime((DateTime)value);
67 }
68 }
69 else if (type == typeof(string))
70 {
71 switch (formatter)
72 {
73 case "XmlName":
74 return FromXmlName((string)value);
75 case "XmlNCName":
76 return FromXmlNCName((string)value);
77 case "XmlNmToken":
78 return FromXmlNmToken((string)value);
79 case "XmlNmTokens":
80 return FromXmlNmTokens((string)value);
81 }
82 }
84 }
85
86 internal static string FromDate(DateTime value)
87 {
88 return XmlConvert.ToString(value, "yyyy-MM-dd");
89 }
90
91 internal static string FromTime(DateTime value)
92 {
94 {
95 return XmlConvert.ToString(DateTime.MinValue + value.TimeOfDay, "HH:mm:ss.fffffffZ");
96 }
97 return XmlConvert.ToString(DateTime.MinValue + value.TimeOfDay, "HH:mm:ss.fffffffzzzzzz");
98 }
99
100 internal static string FromDateTime(DateTime value)
101 {
103 {
104 return XmlConvert.ToString(value, "yyyy-MM-ddTHH:mm:ss.fffffffzzzzzz");
105 }
107 }
108
109 internal static string FromChar(char value)
110 {
111 return XmlConvert.ToString((ushort)value);
112 }
113
114 [return: NotNullIfNotNull("name")]
115 internal static string FromXmlName(string name)
116 {
117 return XmlConvert.EncodeName(name);
118 }
119
120 [return: NotNullIfNotNull("ncName")]
121 internal static string FromXmlNCName(string ncName)
122 {
123 return XmlConvert.EncodeLocalName(ncName);
124 }
125
126 [return: NotNullIfNotNull("nmToken")]
127 internal static string FromXmlNmToken(string nmToken)
128 {
130 }
131
132 [return: NotNullIfNotNull("nmTokens")]
133 internal static string FromXmlNmTokens(string nmTokens)
134 {
135 if (nmTokens == null)
136 {
137 return null;
138 }
139 if (!nmTokens.Contains(' '))
140 {
141 return FromXmlNmToken(nmTokens);
142 }
143 string[] array = nmTokens.Split(' ');
145 for (int i = 0; i < array.Length; i++)
146 {
147 if (i > 0)
148 {
149 stringBuilder.Append(' ');
150 }
152 }
153 return stringBuilder.ToString();
154 }
155
156 internal static void WriteArrayBase64(XmlWriter writer, byte[] inData, int start, int count)
157 {
158 if (inData != null && count != 0)
159 {
160 writer.WriteBase64(inData, start, count);
161 }
162 }
163
164 [return: NotNullIfNotNull("value")]
165 internal static string FromByteArrayHex(byte[] value)
166 {
167 if (value == null)
168 {
169 return null;
170 }
171 if (value.Length == 0)
172 {
173 return "";
174 }
176 }
177
178 internal static string FromEnum(long val, string[] vals, long[] ids, string typeName)
179 {
180 long num = val;
182 int num2 = -1;
183 for (int i = 0; i < ids.Length; i++)
184 {
185 if (ids[i] == 0L)
186 {
187 num2 = i;
188 continue;
189 }
190 if (val == 0L)
191 {
192 break;
193 }
194 if ((ids[i] & num) == ids[i])
195 {
196 if (stringBuilder.Length != 0)
197 {
198 stringBuilder.Append(' ');
199 }
200 stringBuilder.Append(vals[i]);
201 val &= ~ids[i];
202 }
203 }
204 if (val != 0L)
205 {
206 throw new InvalidOperationException(System.SR.Format(System.SR.XmlUnknownConstant, num, (typeName == null) ? "enum" : typeName));
207 }
208 if (stringBuilder.Length == 0 && num2 >= 0)
209 {
210 stringBuilder.Append(vals[num2]);
211 }
212 return stringBuilder.ToString();
213 }
214
215 internal static object ToDefaultValue(string value, string formatter)
216 {
217 return formatter switch
218 {
219 "DateTime" => ToDateTime(value),
220 "Date" => ToDate(value),
221 "Time" => ToTime(value),
222 "XmlName" => ToXmlName(value),
223 "XmlNCName" => ToXmlNCName(value),
224 "XmlNmToken" => ToXmlNmToken(value),
225 "XmlNmTokens" => ToXmlNmTokens(value),
227 };
228 }
229
230 internal static DateTime ToDateTime(string value)
231 {
233 {
235 }
237 }
238
239 internal static DateTime ToDateTime(string value, string[] formats)
240 {
242 }
243
244 internal static DateTime ToDate(string value)
245 {
247 }
248
249 internal static DateTime ToTime(string value)
250 {
252 {
253 return DateTime.ParseExact(value, s_allTimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite | DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.RoundtripKind);
254 }
255 return DateTime.ParseExact(value, s_allTimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite | DateTimeStyles.NoCurrentDateDefault);
256 }
257
258 internal static char ToChar(string value)
259 {
260 return (char)XmlConvert.ToUInt16(value);
261 }
262
263 [return: NotNullIfNotNull("value")]
264 internal static string ToXmlName(string value)
265 {
267 }
268
269 [return: NotNullIfNotNull("value")]
270 internal static string ToXmlNCName(string value)
271 {
273 }
274
275 [return: NotNullIfNotNull("value")]
276 internal static string ToXmlNmToken(string value)
277 {
279 }
280
281 [return: NotNullIfNotNull("value")]
282 internal static string ToXmlNmTokens(string value)
283 {
285 }
286
287 [return: NotNullIfNotNull("value")]
288 internal static byte[] ToByteArrayBase64(string value)
289 {
290 if (value == null)
291 {
292 return null;
293 }
294 value = value.Trim();
295 if (value.Length == 0)
296 {
297 return Array.Empty<byte>();
298 }
300 }
301
302 [return: NotNullIfNotNull("value")]
303 internal static byte[] ToByteArrayHex(string value)
304 {
305 if (value == null)
306 {
307 return null;
308 }
309 value = value.Trim();
311 }
312
313 internal static long ToEnum(string val, Hashtable vals, string typeName, bool validate)
314 {
315 long num = 0L;
316 string[] array = val.Split((char[]?)null);
317 for (int i = 0; i < array.Length; i++)
318 {
319 object obj = vals[array[i]];
320 if (obj != null)
321 {
322 num |= (long)obj;
323 }
324 else if (validate && array[i].Length > 0)
325 {
327 }
328 }
329 return num;
330 }
331
332 [return: NotNullIfNotNull("value")]
333 private static string CollapseWhitespace(string value)
334 {
335 return value?.Trim();
336 }
337}
static unsafe byte[] FromBase64String(string s)
Definition Convert.cs:2904
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string XmlUnknownConstant
Definition SR.cs:1526
static string XmlUnsupportedDefaultValue
Definition SR.cs:1518
static string XmlUnsupportedDefaultType
Definition SR.cs:1516
Definition SR.cs:7
static ? Type GetType(string typeName, bool throwOnError, bool ignoreCase)
Definition Type.cs:408
static string FromEnum(long val, string[] vals, long[] ids, string typeName)
static string FromXmlNmTokens(string nmTokens)
static object ToDefaultValue(string value, string formatter)
static string FromDefaultValue(object value, string formatter)
static void WriteArrayBase64(XmlWriter writer, byte[] inData, int start, int count)
static long ToEnum(string val, Hashtable vals, string typeName, bool validate)
static DateTime ToDateTime(string value, string[] formats)
static DateTimeSerializationSection.DateTimeSerializationMode s_mode
static string ToBinHexString(byte[] inArray)
static ? string EncodeName(string? name)
Definition XmlConvert.cs:37
static ? string DecodeName(string? name)
Definition XmlConvert.cs:55
static string ToString(bool value)
static ? string EncodeLocalName(string? name)
Definition XmlConvert.cs:49
static ? string EncodeNmToken(string? name)
Definition XmlConvert.cs:43
static DateTime ToDateTime(string s)
static byte[] FromBinHexString(string s)
static ushort ToUInt16(string s)
static readonly DateTime MinValue
Definition DateTime.cs:35
static DateTime ParseExact(string s, string format, IFormatProvider? provider)
Definition DateTime.cs:953