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

◆ HtmlDecode() [1/3]

static void System.Net.WebUtility.HtmlDecode ( ReadOnlySpan< char > input,
ref ValueStringBuilder output )
inlinestaticprivate

Definition at line 567 of file WebUtility.cs.

568 {
569 for (int i = 0; i < input.Length; i++)
570 {
571 char c = input[i];
572 if (c == '&')
573 {
574 ReadOnlySpan<char> span = input.Slice(i + 1);
575 int num = span.IndexOfAny(';', '&');
576 if (num >= 0 && span[num] == ';')
577 {
578 int num2 = i + 1 + num;
579 if (num > 1 && span[0] == '#')
580 {
581 uint result;
582 bool flag = ((span[1] == 'x' || span[1] == 'X') ? uint.TryParse(span.Slice(2, num - 2), NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture, out result) : uint.TryParse(span.Slice(1, num - 1), NumberStyles.Integer, CultureInfo.InvariantCulture, out result));
583 if (flag)
584 {
585 flag = result < 55296 || (57343 < result && result <= 1114111);
586 }
587 if (flag)
588 {
589 if (result <= 65535)
590 {
591 output.Append((char)result);
592 }
593 else
594 {
596 output.Append(leadingSurrogate);
598 }
599 i = num2;
600 continue;
601 }
602 }
603 else
604 {
605 ReadOnlySpan<char> readOnlySpan = span.Slice(0, num);
606 i = num2;
607 char c2 = HtmlEntities.Lookup(readOnlySpan);
608 if (c2 == '\0')
609 {
610 output.Append('&');
611 output.Append(readOnlySpan);
612 output.Append(';');
613 continue;
614 }
615 c = c2;
616 }
617 }
618 }
619 output.Append(c);
620 }
621 }
static CultureInfo InvariantCulture
static void ConvertSmpToUtf16(uint smpChar, out char leadingSurrogate, out char trailingSurrogate)

References System.Net.WebUtility.ConvertSmpToUtf16(), System.input, System.Globalization.CultureInfo.InvariantCulture, and System.Net.WebUtility.HtmlEntities.Lookup().