AngleSharp by AngleSharp

<PackageReference Include="AngleSharp" Version="0.9.7" />

.NET API 1,204,224 bytes

 CharExtensions

static class CharExtensions
Useful methods for chars.
using System.Diagnostics; using System.Runtime.CompilerServices; namespace AngleSharp.Extensions { [DebuggerStepThrough] internal static class CharExtensions { public static int FromHex(this char c) { if (!c.IsDigit()) return c - (c.IsLowercaseAscii() ? 87 : 55); return c - 48; } public static string ToHex(this byte num) { char[] obj = new char[2]; int num2 = num >> 4; obj[0] = (char)(num2 + ((num2 < 10) ? 48 : 55)); num2 = num - 16 * num2; obj[1] = (char)(num2 + ((num2 < 10) ? 48 : 55)); return new string(obj); } public static string ToHex(this char character) { int num = character; return num.ToString("x"); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsInRange(this char c, int lower, int upper) { if (c >= lower) return c <= upper; return false; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsNormalQueryCharacter(this char c) { if (c.IsInRange(33, 126) && c != '"' && c != '`' && c != '#' && c != '<') return c != '>'; return false; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsNormalPathCharacter(this char c) { if (c.IsInRange(32, 126) && c != '"' && c != '`' && c != '#' && c != '<' && c != '>' && c != ' ') return c != '?'; return false; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsUppercaseAscii(this char c) { if (c >= 'A') return c <= 'Z'; return false; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsLowercaseAscii(this char c) { if (c >= 'a') return c <= 'z'; return false; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsAlphanumericAscii(this char c) { if (!c.IsDigit() && !c.IsUppercaseAscii()) return c.IsLowercaseAscii(); return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsHex(this char c) { if (!c.IsDigit() && (c < 'A' || c > 'F')) { if (c >= 'a') return c <= 'f'; return false; } return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsNonAscii(this char c) { if (c != '￿') return c >= '€'; return false; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsNonPrintable(this char c) { if ((c < '' || c > '\b') && (c < '' || c > '')) { if (c >= '') return c <= 'Ÿ'; return false; } return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsLetter(this char c) { if (!c.IsUppercaseAscii()) return c.IsLowercaseAscii(); return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsName(this char c) { if (!c.IsNonAscii() && !c.IsLetter() && c != '_' && c != '-') return c.IsDigit(); return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsNameStart(this char c) { if (!c.IsNonAscii() && !c.IsUppercaseAscii() && !c.IsLowercaseAscii()) return c == '_'; return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsLineBreak(this char c) { if (c != '\n') return c == '\r'; return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsSpaceCharacter(this char c) { if (c != ' ' && c != '\t' && c != '\n' && c != '\r') return c == ' '; return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsWhiteSpaceCharacter(this char c) { if (!c.IsInRange(9, 13) && c != ' ' && c != '…' && c != ' ' && c != ' ' && c != '᠎' && !c.IsInRange(8192, 8202) && c != '
' && c != '
' && c != ' ' && c != ' ') return c == ' '; return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsDigit(this char c) { if (c >= '0') return c <= '9'; return false; } public static bool IsUrlCodePoint(this char c) { if (!c.IsAlphanumericAscii() && c != '!' && c != '$' && c != '&' && c != '\'' && c != '(' && c != ')' && c != '*' && c != '+' && c != '-' && c != ',' && c != '.' && c != '/' && c != ':' && c != ';' && c != '=' && c != '?' && c != '@' && c != '_' && c != '~' && !c.IsInRange(160, 55295) && !c.IsInRange(57344, 64975) && !c.IsInRange(65008, 65533) && !c.IsInRange(65536, 131069) && !c.IsInRange(131072, 196605) && !c.IsInRange(196608, 262141) && !c.IsInRange(262144, 327677) && !c.IsInRange(327680, 393213) && !c.IsInRange(393216, 458749) && !c.IsInRange(458752, 524285) && !c.IsInRange(524288, 589821) && !c.IsInRange(589824, 655357) && !c.IsInRange(655360, 720893) && !c.IsInRange(720896, 786429) && !c.IsInRange(786432, 851965) && !c.IsInRange(851968, 917501) && !c.IsInRange(917504, 983037) && !c.IsInRange(983040, 1048573)) return c.IsInRange(1048576, 1114109); return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsInvalid(this int c) { if (c != 0 && c <= 1114111) { if (c > 55296) return c < 57343; return false; } return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsOneOf(this char c, char a, char b) { if (a != c) return b == c; return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsOneOf(this char c, char o1, char o2, char o3) { if (c != o1 && c != o2) return c == o3; return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsOneOf(this char c, char o1, char o2, char o3, char o4) { if (c != o1 && c != o2 && c != o3) return c == o4; return true; } } }