This commit is contained in:
niko
2026-06-04 11:42:34 +02:00
parent f39ba70a9f
commit e720b98cd1
7488 changed files with 2493818 additions and 0 deletions
@@ -0,0 +1,324 @@
using System;
using System.Globalization;
namespace System.Text.RegularExpressions
{
// Token: 0x020002C4 RID: 708
internal class CategoryUtils
{
// Token: 0x060019AD RID: 6573 RVA: 0x0005B5B8 File Offset: 0x000597B8
public static Category CategoryFromName(string name)
{
Category category;
try
{
if (name.StartsWith("Is"))
{
name = name.Substring(2);
}
category = (Category)((ushort)Enum.Parse(typeof(Category), "Unicode" + name, false));
}
catch (ArgumentException)
{
category = Category.None;
}
return category;
}
// Token: 0x060019AE RID: 6574 RVA: 0x0005B634 File Offset: 0x00059834
public static bool IsCategory(Category cat, char c)
{
switch (cat)
{
case Category.None:
return false;
case Category.Any:
return c != '\n';
case Category.AnySingleline:
return true;
case Category.Word:
return char.IsLetterOrDigit(c) || CategoryUtils.IsCategory(UnicodeCategory.ConnectorPunctuation, c);
case Category.Digit:
return char.IsDigit(c);
case Category.WhiteSpace:
return char.IsWhiteSpace(c);
case Category.EcmaAny:
return c != '\n';
case Category.EcmaAnySingleline:
return true;
case Category.EcmaWord:
return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9') || '_' == c;
case Category.EcmaDigit:
return '0' <= c && c <= '9';
case Category.EcmaWhiteSpace:
return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v';
case Category.UnicodeL:
return CategoryUtils.IsCategory(UnicodeCategory.UppercaseLetter, c) || CategoryUtils.IsCategory(UnicodeCategory.LowercaseLetter, c) || CategoryUtils.IsCategory(UnicodeCategory.TitlecaseLetter, c) || CategoryUtils.IsCategory(UnicodeCategory.ModifierLetter, c) || CategoryUtils.IsCategory(UnicodeCategory.OtherLetter, c);
case Category.UnicodeM:
return CategoryUtils.IsCategory(UnicodeCategory.NonSpacingMark, c) || CategoryUtils.IsCategory(UnicodeCategory.EnclosingMark, c) || CategoryUtils.IsCategory(UnicodeCategory.SpacingCombiningMark, c);
case Category.UnicodeN:
return CategoryUtils.IsCategory(UnicodeCategory.DecimalDigitNumber, c) || CategoryUtils.IsCategory(UnicodeCategory.LetterNumber, c) || CategoryUtils.IsCategory(UnicodeCategory.OtherNumber, c);
case Category.UnicodeZ:
return CategoryUtils.IsCategory(UnicodeCategory.SpaceSeparator, c) || CategoryUtils.IsCategory(UnicodeCategory.LineSeparator, c) || CategoryUtils.IsCategory(UnicodeCategory.ParagraphSeparator, c);
case Category.UnicodeP:
return CategoryUtils.IsCategory(UnicodeCategory.DashPunctuation, c) || CategoryUtils.IsCategory(UnicodeCategory.OpenPunctuation, c) || CategoryUtils.IsCategory(UnicodeCategory.InitialQuotePunctuation, c) || CategoryUtils.IsCategory(UnicodeCategory.ClosePunctuation, c) || CategoryUtils.IsCategory(UnicodeCategory.FinalQuotePunctuation, c) || CategoryUtils.IsCategory(UnicodeCategory.ConnectorPunctuation, c) || CategoryUtils.IsCategory(UnicodeCategory.OtherPunctuation, c);
case Category.UnicodeS:
return CategoryUtils.IsCategory(UnicodeCategory.MathSymbol, c) || CategoryUtils.IsCategory(UnicodeCategory.CurrencySymbol, c) || CategoryUtils.IsCategory(UnicodeCategory.ModifierSymbol, c) || CategoryUtils.IsCategory(UnicodeCategory.OtherSymbol, c);
case Category.UnicodeC:
return CategoryUtils.IsCategory(UnicodeCategory.Control, c) || CategoryUtils.IsCategory(UnicodeCategory.Format, c) || CategoryUtils.IsCategory(UnicodeCategory.PrivateUse, c) || CategoryUtils.IsCategory(UnicodeCategory.Surrogate, c) || CategoryUtils.IsCategory(UnicodeCategory.OtherNotAssigned, c);
case Category.UnicodeLu:
return CategoryUtils.IsCategory(UnicodeCategory.UppercaseLetter, c);
case Category.UnicodeLl:
return CategoryUtils.IsCategory(UnicodeCategory.LowercaseLetter, c);
case Category.UnicodeLt:
return CategoryUtils.IsCategory(UnicodeCategory.TitlecaseLetter, c);
case Category.UnicodeLm:
return CategoryUtils.IsCategory(UnicodeCategory.ModifierLetter, c);
case Category.UnicodeLo:
return CategoryUtils.IsCategory(UnicodeCategory.OtherLetter, c);
case Category.UnicodeMn:
return CategoryUtils.IsCategory(UnicodeCategory.NonSpacingMark, c);
case Category.UnicodeMe:
return CategoryUtils.IsCategory(UnicodeCategory.EnclosingMark, c);
case Category.UnicodeMc:
return CategoryUtils.IsCategory(UnicodeCategory.SpacingCombiningMark, c);
case Category.UnicodeNd:
return CategoryUtils.IsCategory(UnicodeCategory.DecimalDigitNumber, c);
case Category.UnicodeNl:
return CategoryUtils.IsCategory(UnicodeCategory.LetterNumber, c);
case Category.UnicodeNo:
return CategoryUtils.IsCategory(UnicodeCategory.OtherNumber, c);
case Category.UnicodeZs:
return CategoryUtils.IsCategory(UnicodeCategory.SpaceSeparator, c);
case Category.UnicodeZl:
return CategoryUtils.IsCategory(UnicodeCategory.LineSeparator, c);
case Category.UnicodeZp:
return CategoryUtils.IsCategory(UnicodeCategory.ParagraphSeparator, c);
case Category.UnicodePd:
return CategoryUtils.IsCategory(UnicodeCategory.DashPunctuation, c);
case Category.UnicodePs:
return CategoryUtils.IsCategory(UnicodeCategory.OpenPunctuation, c);
case Category.UnicodePi:
return CategoryUtils.IsCategory(UnicodeCategory.InitialQuotePunctuation, c);
case Category.UnicodePe:
return CategoryUtils.IsCategory(UnicodeCategory.ClosePunctuation, c);
case Category.UnicodePf:
return CategoryUtils.IsCategory(UnicodeCategory.FinalQuotePunctuation, c);
case Category.UnicodePc:
return CategoryUtils.IsCategory(UnicodeCategory.ConnectorPunctuation, c);
case Category.UnicodePo:
return CategoryUtils.IsCategory(UnicodeCategory.OtherPunctuation, c);
case Category.UnicodeSm:
return CategoryUtils.IsCategory(UnicodeCategory.MathSymbol, c);
case Category.UnicodeSc:
return CategoryUtils.IsCategory(UnicodeCategory.CurrencySymbol, c);
case Category.UnicodeSk:
return CategoryUtils.IsCategory(UnicodeCategory.ModifierSymbol, c);
case Category.UnicodeSo:
return CategoryUtils.IsCategory(UnicodeCategory.OtherSymbol, c);
case Category.UnicodeCc:
return CategoryUtils.IsCategory(UnicodeCategory.Control, c);
case Category.UnicodeCf:
return CategoryUtils.IsCategory(UnicodeCategory.Format, c);
case Category.UnicodeCo:
return CategoryUtils.IsCategory(UnicodeCategory.PrivateUse, c);
case Category.UnicodeCs:
return CategoryUtils.IsCategory(UnicodeCategory.Surrogate, c);
case Category.UnicodeCn:
return CategoryUtils.IsCategory(UnicodeCategory.OtherNotAssigned, c);
case Category.UnicodeBasicLatin:
return '\0' <= c && c <= '\u007f';
case Category.UnicodeLatin1Supplement:
return '\u0080' <= c && c <= 'ÿ';
case Category.UnicodeLatinExtendedA:
return 'Ā' <= c && c <= 'ſ';
case Category.UnicodeLatinExtendedB:
return 'ƀ' <= c && c <= 'ɏ';
case Category.UnicodeIPAExtensions:
return 'ɐ' <= c && c <= 'ʯ';
case Category.UnicodeSpacingModifierLetters:
return 'ʰ' <= c && c <= '\u02ff';
case Category.UnicodeCombiningDiacriticalMarks:
return '\u0300' <= c && c <= '\u036f';
case Category.UnicodeGreek:
return 'Ͱ' <= c && c <= 'Ͽ';
case Category.UnicodeCyrillic:
return 'Ѐ' <= c && c <= 'ӿ';
case Category.UnicodeArmenian:
return '\u0530' <= c && c <= '֏';
case Category.UnicodeHebrew:
return '\u0590' <= c && c <= '\u05ff';
case Category.UnicodeArabic:
return '\u0600' <= c && c <= 'ۿ';
case Category.UnicodeSyriac:
return '܀' <= c && c <= 'ݏ';
case Category.UnicodeThaana:
return 'ހ' <= c && c <= '\u07bf';
case Category.UnicodeDevanagari:
return '\u0900' <= c && c <= 'ॿ';
case Category.UnicodeBengali:
return 'ঀ' <= c && c <= '\u09ff';
case Category.UnicodeGurmukhi:
return '\u0a00' <= c && c <= '\u0a7f';
case Category.UnicodeGujarati:
return '\u0a80' <= c && c <= '\u0aff';
case Category.UnicodeOriya:
return '\u0b00' <= c && c <= '\u0b7f';
case Category.UnicodeTamil:
return '\u0b80' <= c && c <= '\u0bff';
case Category.UnicodeTelugu:
return '\u0c00' <= c && c <= '౿';
case Category.UnicodeKannada:
return 'ಀ' <= c && c <= '\u0cff';
case Category.UnicodeMalayalam:
return '\u0d00' <= c && c <= 'ൿ';
case Category.UnicodeSinhala:
return '\u0d80' <= c && c <= '\u0dff';
case Category.UnicodeThai:
return '\u0e00' <= c && c <= '\u0e7f';
case Category.UnicodeLao:
return '\u0e80' <= c && c <= '\u0eff';
case Category.UnicodeTibetan:
return 'ༀ' <= c && c <= '\u0fff';
case Category.UnicodeMyanmar:
return 'က' <= c && c <= '႟';
case Category.UnicodeGeorgian:
return 'Ⴀ' <= c && c <= '';
case Category.UnicodeHangulJamo:
return 'ᄀ' <= c && c <= 'ᇿ';
case Category.UnicodeEthiopic:
return '' <= c && c <= '\u137f';
case Category.UnicodeCherokee:
return '' <= c && c <= '\u13ff';
case Category.UnicodeUnifiedCanadianAboriginalSyllabics:
return '' <= c && c <= 'ᙿ';
case Category.UnicodeOgham:
return '\u1680' <= c && c <= '\u169f';
case Category.UnicodeRunic:
return 'ᚠ' <= c && c <= '\u16ff';
case Category.UnicodeKhmer:
return 'ក' <= c && c <= '\u17ff';
case Category.UnicodeMongolian:
return '᠀' <= c && c <= '\u18af';
case Category.UnicodeLatinExtendedAdditional:
return 'Ḁ' <= c && c <= 'ỿ';
case Category.UnicodeGreekExtended:
return 'ἀ' <= c && c <= '\u1fff';
case Category.UnicodeGeneralPunctuation:
return '\u2000' <= c && c <= '\u206f';
case Category.UnicodeSuperscriptsandSubscripts:
return '⁰' <= c && c <= '\u209f';
case Category.UnicodeCurrencySymbols:
return '₠' <= c && c <= '\u20cf';
case Category.UnicodeCombiningMarksforSymbols:
return '\u20d0' <= c && c <= '\u20ff';
case Category.UnicodeLetterlikeSymbols:
return '℀' <= c && c <= '⅏';
case Category.UnicodeNumberForms:
return '⅐' <= c && c <= '\u218f';
case Category.UnicodeArrows:
return '←' <= c && c <= '⇿';
case Category.UnicodeMathematicalOperators:
return '∀' <= c && c <= '';
case Category.UnicodeMiscellaneousTechnical:
return '⌀' <= c && c <= '⏿';
case Category.UnicodeControlPictures:
return '␀' <= c && c <= '\u243f';
case Category.UnicodeOpticalCharacterRecognition:
return '⑀' <= c && c <= '\u245f';
case Category.UnicodeEnclosedAlphanumerics:
return '①' <= c && c <= '⓿';
case Category.UnicodeBoxDrawing:
return '─' <= c && c <= '╿';
case Category.UnicodeBlockElements:
return '▀' <= c && c <= '▟';
case Category.UnicodeGeometricShapes:
return '■' <= c && c <= '◿';
case Category.UnicodeMiscellaneousSymbols:
return '☀' <= c && c <= '⛿';
case Category.UnicodeDingbats:
return '✀' <= c && c <= '➿';
case Category.UnicodeBraillePatterns:
return '' <= c && c <= '⣿';
case Category.UnicodeCJKRadicalsSupplement:
return '⺀' <= c && c <= '\u2eff';
case Category.UnicodeKangxiRadicals:
return '⼀' <= c && c <= '\u2fdf';
case Category.UnicodeIdeographicDescriptionCharacters:
return '⿰' <= c && c <= '\u2fff';
case Category.UnicodeCJKSymbolsandPunctuation:
return '\u3000' <= c && c <= '〿';
case Category.UnicodeHiragana:
return '\u3040' <= c && c <= 'ゟ';
case Category.UnicodeKatakana:
return '' <= c && c <= 'ヿ';
case Category.UnicodeBopomofo:
return '\u3100' <= c && c <= 'ㄯ';
case Category.UnicodeHangulCompatibilityJamo:
return '\u3130' <= c && c <= '\u318f';
case Category.UnicodeKanbun:
return '㆐' <= c && c <= '㆟';
case Category.UnicodeBopomofoExtended:
return 'ㆠ' <= c && c <= 'ㆿ';
case Category.UnicodeEnclosedCJKLettersandMonths:
return '㈀' <= c && c <= '㋿';
case Category.UnicodeCJKCompatibility:
return '㌀' <= c && c <= '㏿';
case Category.UnicodeCJKUnifiedIdeographsExtensionA:
return '㐀' <= c && c <= '䶵';
case Category.UnicodeCJKUnifiedIdeographs:
return '一' <= c && c <= '鿿';
case Category.UnicodeYiSyllables:
return 'ꀀ' <= c && c <= '\ua48f';
case Category.UnicodeYiRadicals:
return '꒐' <= c && c <= '\ua4cf';
case Category.UnicodeHangulSyllables:
return '가' <= c && c <= '힣';
case Category.UnicodeHighSurrogates:
return '\ud800' <= c && c <= '\udb7f';
case Category.UnicodeHighPrivateUseSurrogates:
return '\udb80' <= c && c <= '\udbff';
case Category.UnicodeLowSurrogates:
return '\udc00' <= c && c <= '\udfff';
case Category.UnicodePrivateUse:
return '\ue000' <= c && c <= '\uf8ff';
case Category.UnicodeCJKCompatibilityIdeographs:
return '豈' <= c && c <= '\ufaff';
case Category.UnicodeAlphabeticPresentationForms:
return 'ff' <= c && c <= 'ﭏ';
case Category.UnicodeArabicPresentationFormsA:
return 'ﭐ' <= c && c <= '﷿';
case Category.UnicodeCombiningHalfMarks:
return '\ufe20' <= c && c <= '\ufe2f';
case Category.UnicodeCJKCompatibilityForms:
return '' <= c && c <= '\ufe4f';
case Category.UnicodeSmallFormVariants:
return '﹐' <= c && c <= '\ufe6f';
case Category.UnicodeArabicPresentationFormsB:
return 'ﹰ' <= c && c <= '\ufefe';
case Category.UnicodeSpecials:
return ('\ufeff' <= c && c <= '\ufeff') || ('\ufff0' <= c && c <= '\ufffd');
case Category.UnicodeHalfwidthandFullwidthForms:
return '\uff00' <= c && c <= '\uffef';
case Category.UnicodeOldItalic:
case Category.UnicodeGothic:
case Category.UnicodeDeseret:
case Category.UnicodeByzantineMusicalSymbols:
case Category.UnicodeMusicalSymbols:
case Category.UnicodeMathematicalAlphanumericSymbols:
case Category.UnicodeCJKUnifiedIdeographsExtensionB:
case Category.UnicodeCJKCompatibilityIdeographsSupplement:
case Category.UnicodeTags:
return false;
default:
return false;
}
}
// Token: 0x060019AF RID: 6575 RVA: 0x0005C4B0 File Offset: 0x0005A6B0
private static bool IsCategory(UnicodeCategory uc, char c)
{
return char.GetUnicodeCategory(c) == uc;
}
}
}