e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
283 lines
11 KiB
C#
283 lines
11 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="UpperMiddle.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
namespace System.Web.Security.AntiXss.CodeCharts {
|
|
using System.Collections;
|
|
using System.Linq;
|
|
|
|
/// <summary>
|
|
/// Provides safe character positions for the upper middle section of the UTF code tables.
|
|
/// </summary>
|
|
internal static class UpperMiddle {
|
|
/// <summary>
|
|
/// Determines if the specified flag is set.
|
|
/// </summary>
|
|
/// <param name="flags">The value to check.</param>
|
|
/// <param name="flagToCheck">The flag to check for.</param>
|
|
/// <returns>true if the flag is set, otherwise false.</returns>
|
|
public static bool IsFlagSet(UpperMidCodeCharts flags, UpperMidCodeCharts flagToCheck) {
|
|
return (flags & flagToCheck) != 0;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Cyrillic Extended A code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CyrillicExtendedA() {
|
|
return CodeChartHelper.GetRange(0x2DE0, 0x2DFF);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Cyrillic Extended A code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable SupplementalPunctuation() {
|
|
return CodeChartHelper.GetRange(0x2E00, 0x2E31);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the CJK Radicals Supplement code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CjkRadicalsSupplement() {
|
|
return CodeChartHelper.GetRange(0x2E80, 0x2EF3,
|
|
i => (i == 0x2E9A));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Kangxi Radicals code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable KangxiRadicals() {
|
|
return CodeChartHelper.GetRange(0x2F00, 0x2FD5);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Ideographic Description Characters code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable IdeographicDescriptionCharacters() {
|
|
return CodeChartHelper.GetRange(0x2FF0, 0x2FFB);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the CJK Symbols and Punctuation code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CjkSymbolsAndPunctuation() {
|
|
return CodeChartHelper.GetRange(0x3000, 0x303F);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Hiragana code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Hiragana() {
|
|
return CodeChartHelper.GetRange(0x3041, 0x309F,
|
|
i => (i == 0x3097 ||
|
|
i == 0x3098));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Hiragana code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Katakana() {
|
|
return CodeChartHelper.GetRange(0x30A0, 0x30FF);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Bopomofo code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Bopomofo() {
|
|
return CodeChartHelper.GetRange(0x3105, 0x312D);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Hangul Compatibility Jamo code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable HangulCompatibilityJamo() {
|
|
return CodeChartHelper.GetRange(0x3131, 0x318E);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Kanbun code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Kanbun() {
|
|
return CodeChartHelper.GetRange(0x3190, 0x319F);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Bopomofo Extended code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable BopomofoExtended() {
|
|
return CodeChartHelper.GetRange(0x31A0, 0x31B7);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the CJK Strokes code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CjkStrokes() {
|
|
return CodeChartHelper.GetRange(0x31C0, 0x31E3);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Katakana Phonetic Extensions code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable KatakanaPhoneticExtensions() {
|
|
return CodeChartHelper.GetRange(0x31F0, 0x31FF);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Enclosed CJK Letters and Months code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable EnclosedCjkLettersAndMonths() {
|
|
return CodeChartHelper.GetRange(0x3200, 0x32FE,
|
|
i => (i == 0x321F));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the CJK Compatibility code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CjkCompatibility() {
|
|
return CodeChartHelper.GetRange(0x3300, 0x33FF);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the CJK Unified Ideographs Extension A code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CjkUnifiedIdeographsExtensionA() {
|
|
return CodeChartHelper.GetRange(0x3400, 0x4DB5);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Yijing Hexagram Symbols code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable YijingHexagramSymbols() {
|
|
return CodeChartHelper.GetRange(0x4DC0, 0x4DFF);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the CJK Unified Ideographs code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CjkUnifiedIdeographs() {
|
|
return CodeChartHelper.GetRange(0x4E00, 0x9FCB);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Yi Syllables code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable YiSyllables() {
|
|
return CodeChartHelper.GetRange(0xA000, 0xA48C);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Yi Radicals code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable YiRadicals() {
|
|
return CodeChartHelper.GetRange(0xA490, 0xA4C6);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Lisu code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Lisu() {
|
|
return CodeChartHelper.GetRange(0xA4D0, 0xA4FF);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Vai code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Vai() {
|
|
return CodeChartHelper.GetRange(0xA500, 0xA62B);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Cyrillic Extended B code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CyrillicExtendedB() {
|
|
return CodeChartHelper.GetRange(0xA640, 0xA697,
|
|
i => (i == 0xA660 ||
|
|
i == 0xA661 ||
|
|
(i >= 0xA674 && i <= 0xA67b)));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Bamum code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Bamum() {
|
|
return CodeChartHelper.GetRange(0xA6A0, 0xA6F7);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Modifier Tone Letters code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable ModifierToneLetters() {
|
|
return CodeChartHelper.GetRange(0xA700, 0xA71F);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Latin Extended D code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable LatinExtendedD() {
|
|
return CodeChartHelper.GetRange(0xA720, 0xA78C).Concat(
|
|
CodeChartHelper.GetRange(0xA7FB, 0xA7FF));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Syloti Nagri code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable SylotiNagri() {
|
|
return CodeChartHelper.GetRange(0xA800, 0xA82B);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Common Indic Number Forms code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CommonIndicNumberForms() {
|
|
return CodeChartHelper.GetRange(0xA830, 0xA839);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Phags-pa code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Phagspa() {
|
|
return CodeChartHelper.GetRange(0xA840, 0xA877);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Saurashtra code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Saurashtra() {
|
|
return CodeChartHelper.GetRange(0xA880, 0xA8D9,
|
|
i => (i >= 0xA8C5 && i <= 0xA8CD));
|
|
}
|
|
}
|
|
}
|