Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  runtime.rs

  Sprache: Rust
 

// This file is part of ICU4X. For terms of use, please see the file
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).

//! �� \[Unstable\] This module is unstable and currently crate-private. Let us know if you
//! have a use case for this!
//!
//! This module contains utilities for working with properties where the specific property in use
//! is not known at compile time.
//!
//! For regex engines, [`crate::sets::load_for_ecma262_unstable()`] is a convenient API for working
//! with properties at runtime tailored for the use case of ECMA262-compatible regex engines.

use crate::provider::*;
use crate::CodePointSetData;
#[cfg(doc)]
use crate::{
    props::{GeneralCategory, GeneralCategoryGroup, Script},
    script, CodePointMapData, PropertyParser,
};
use icu_provider::prelude::*;

/// This type can represent any binary Unicode property.
///
/// This is intended to be used in situations where the exact unicode property needed is
/// only known at runtime, for example in regex engines.
///
/// The values are intended to be identical to ICU4C's `UProperty` enum
#[non_exhaustive]
#[allow(missing_docs)]
#[allow(dead_code)]
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
enum BinaryProperty {
    Alnum = 44,
    Alphabetic = 0,
    AsciiHexDigit = 1,
    BidiControl = 2,
    BidiMirrored = 3,
    Blank = 45,
    Cased = 49,
    CaseIgnorable = 50,
    CaseSensitive = 34,
    ChangesWhenCasefolded = 54,
    ChangesWhenCasemapped = 55,
    ChangesWhenLowercased = 51,
    ChangesWhenNfkcCasefolded = 56,
    ChangesWhenTitlecased = 53,
    ChangesWhenUppercased = 52,
    Dash = 4,
    DefaultIgnorableCodePoint = 5,
    Deprecated = 6,
    Diacritic = 7,
    Emoji = 57,
    EmojiComponent = 61,
    EmojiModifier = 59,
    EmojiModifierBase = 60,
    EmojiPresentation = 58,
    ExtendedPictographic = 64,
    Extender = 8,
    FullCompositionExclusion = 9,
    Graph = 46,
    GraphemeBase = 10,
    GraphemeExtend = 11,
    GraphemeLink = 12,
    HexDigit = 13,
    Hyphen = 14,
    IdCompatMathContinue = 65,
    IdCompatMathStart = 66,
    IdContinue = 15,
    Ideographic = 17,
    IdsBinaryOperator = 18,
    IdStart = 16,
    IdsTrinaryOperator = 19,
    IdsUnaryOperator = 67,
    JoinControl = 20,
    LogicalOrderException = 21,
    Lowercase = 22,
    Math = 23,
    ModifierCombiningMark = 68,
    NfcInert = 39,
    NfdInert = 37,
    NfkcInert = 40,
    NfkdInert = 38,
    NoncharacterCodePoint = 24,
    PatternSyntax = 42,
    PatternWhiteSpace = 43,
    PrependedConcatenationMark = 63,
    Print = 47,
    QuotationMark = 25,
    Radical = 26,
    RegionalIndicator = 62,
    SegmentStarter = 41,
    SentenceTerminal = 35,
    SoftDotted = 27,
    TerminalPunctuation = 28,
    UnifiedIdeograph = 29,
    Uppercase = 30,
    VariationSelector = 36,
    WhiteSpace = 31,
    Xdigit = 48,
    XidContinue = 32,
    XidStart = 33,
}

/// This type can represent any binary property over strings.
///
/// This is intended to be used in situations where the exact unicode property needed is
/// only known at runtime, for example in regex engines.
///
/// The values are intended to be identical to ICU4C's `UProperty` enum
#[non_exhaustive]
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
#[allow(dead_code)]
#[allow(missing_docs)]
enum StringBinaryProperty {
    BasicEmoji = 65,
    EmojiKeycapSequence = 66,
    RgiEmoji = 71,
    RgiEmojiFlagSequence = 68,
    RgiEmojiModifierSequence = 67,
    RgiEmojiTagSequence = 69,
    RgiEmojiZWJSequence = 70,
}

/// This type can represent any enumerated Unicode property.
///
/// This is intended to be used in situations where the exact unicode property needed is
/// only known at runtime, for example in regex engines.
///
/// The values are intended to be identical to ICU4C's `UProperty` enum
#[non_exhaustive]
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
#[allow(dead_code)]
#[allow(missing_docs)]
enum EnumeratedProperty {
    BidiClass = 0x1000,
    BidiPairedBracketType = 0x1015,
    Block = 0x1001,
    CombiningClass = 0x1002,
    DecompositionType = 0x1003,
    EastAsianWidth = 0x1004,
    GeneralCategory = 0x1005,
    GraphemeClusterBreak = 0x1012,
    HangulSyllableType = 0x100B,
    IndicConjunctBreak = 0x101A,
    IndicPositionalCategory = 0x1016,
    IndicSyllabicCategory = 0x1017,
    JoiningGroup = 0x1006,
    JoiningType = 0x1007,
    LeadCanonicalCombiningClass = 0x1010,
    LineBreak = 0x1008,
    NFCQuickCheck = 0x100E,
    NFDQuickCheck = 0x100C,
    NFKCQuickCheck = 0x100F,
    NFKDQuickCheck = 0x100D,
    NumericType = 0x1009,
    Script = 0x100A,
    SentenceBreak = 0x1013,
    TrailCanonicalCombiningClass = 0x1011,
    VerticalOrientation = 0x1018,
    WordBreak = 0x1014,
}

/// This type can represent any Unicode mask property.
///
/// This is intended to be used in situations where the exact unicode property needed is
/// only known at runtime, for example in regex engines.
///
/// The values are intended to be identical to ICU4C's `UProperty` enum
#[non_exhaustive]
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
#[allow(dead_code)]
#[allow(missing_docs)]
enum MaskProperty {
    GeneralCategoryMask = 0x2000,
}

/// This type can represent any numeric Unicode property.
///
/// This is intended to be used in situations where the exact unicode property needed is
/// only known at runtime, for example in regex engines.
///
/// The values are intended to be identical to ICU4C's `UProperty` enum
#[non_exhaustive]
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
#[allow(dead_code)]
#[allow(missing_docs)]
enum NumericProperty {
    NumericValue = 0x3000,
}

/// This type can represent any Unicode string property.
///
/// This is intended to be used in situations where the exact unicode property needed is
/// only known at runtime, for example in regex engines.
///
/// The values are intended to be identical to ICU4C's `UProperty` enum
#[non_exhaustive]
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
#[allow(dead_code)]
#[allow(missing_docs)]
enum StringProperty {
    Age = 0x4000,
    BidiMirroringGlyph = 0x4001,
    BidiPairedBracket = 0x400D,
    CaseFolding = 0x4002,
    ISOComment = 0x4003,
    LowercaseMapping = 0x4004,
    Name = 0x4005,
    SimpleCaseFolding = 0x4006,
    SimpleLowercaseMapping = 0x4007,
    SimpleTitlecaseMapping = 0x4008,
    SimpleUppercaseMapping = 0x4009,
    TitlecaseMapping = 0x400A,
    Unicode1Name = 0x400B,
    UppercaseMapping = 0x400C,
}

#[non_exhaustive]
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
#[allow(dead_code)]
#[allow(missing_docs)]
enum MiscProperty {
    ScriptExtensions = 0x7000,
}

impl CodePointSetData {
    /// Returns a type capable of looking up values for a property specified as a string, as long as it is a
    /// [binary property listed in ECMA-262][ecma], using strict matching on the names in the spec.
    ///
    /// This handles every property required by ECMA-262 `/u` regular expressions, except for:
    ///
    /// - `Script` and `General_Category`: handle these directly using property values parsed via
    ///   [`PropertyParser<GeneralCategory>`] and [`PropertyParser<Script>`]
    ///   if necessary.
    /// - `Script_Extensions`: handle this directly using APIs from [`crate::script::ScriptWithExtensions`]
    /// - `General_Category` mask values: Handle this alongside `General_Category` using [`GeneralCategoryGroup`],
    ///   using property values parsed via [`PropertyParser<GeneralCategory>`] if necessary
    /// - `Assigned`, `All`, and `ASCII` pseudoproperties: Handle these using their equivalent sets:
    ///    - `Any` can be expressed as the range `[\u{0}-\u{10FFFF}]`
    ///    - `Assigned` can be expressed as the inverse of the set `gc=Cn` (i.e., `\P{gc=Cn}`).
    ///    - `ASCII` can be expressed as the range `[\u{0}-\u{7F}]`
    /// - `General_Category` property values can themselves be treated like properties using a shorthand in ECMA262,
    ///   simply create the corresponding `GeneralCategory` set.
    ///
    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
    ///
    /// [�� Help choosing a constructor](icu_provider::constructors)
    ///
    /// ```
    /// use icu::properties::CodePointSetData;
    ///
    /// let emoji = CodePointSetData::new_for_ecma262(b"Emoji")
    ///     .expect("is an ECMA-262 property");
    ///
    /// assert!(emoji.contains('��')); // U+1F525 FIRE
    /// assert!(!emoji.contains('V'));
    /// ```
    ///
    /// [ecma]: https://tc39.es/ecma262/#table-binary-unicode-properties
    #[cfg(feature = "compiled_data")]
    pub fn new_for_ecma262(prop: &[u8]) -> Option<crate::CodePointSetDataBorrowed<'static>> {
        use crate::props::*;
        Some(match prop {
            AsciiHexDigit::NAME | AsciiHexDigit::SHORT_NAME => Self::new::<AsciiHexDigit>(),
            Alphabetic::NAME | Alphabetic::SHORT_NAME => Self::new::<Alphabetic>(),
            BidiControl::NAME | BidiControl::SHORT_NAME => Self::new::<BidiControl>(),
            BidiMirrored::NAME | BidiMirrored::SHORT_NAME => Self::new::<BidiMirrored>(),
            CaseIgnorable::NAME | CaseIgnorable::SHORT_NAME => Self::new::<CaseIgnorable>(),
            #[allow(unreachable_patterns)] // no short name
            Cased::NAME | Cased::SHORT_NAME => Self::new::<Cased>(),
            ChangesWhenCasefolded::NAME | ChangesWhenCasefolded::SHORT_NAME => {
                Self::new::<ChangesWhenCasefolded>()
            }
            ChangesWhenCasemapped::NAME | ChangesWhenCasemapped::SHORT_NAME => {
                Self::new::<ChangesWhenCasemapped>()
            }
            ChangesWhenLowercased::NAME | ChangesWhenLowercased::SHORT_NAME => {
                Self::new::<ChangesWhenLowercased>()
            }
            ChangesWhenNfkcCasefolded::NAME | ChangesWhenNfkcCasefolded::SHORT_NAME => {
                Self::new::<ChangesWhenNfkcCasefolded>()
            }
            ChangesWhenTitlecased::NAME | ChangesWhenTitlecased::SHORT_NAME => {
                Self::new::<ChangesWhenTitlecased>()
            }
            ChangesWhenUppercased::NAME | ChangesWhenUppercased::SHORT_NAME => {
                Self::new::<ChangesWhenUppercased>()
            }
            #[allow(unreachable_patterns)] // no short name
            Dash::NAME | Dash::SHORT_NAME => Self::new::<Dash>(),
            DefaultIgnorableCodePoint::NAME | DefaultIgnorableCodePoint::SHORT_NAME => {
                Self::new::<DefaultIgnorableCodePoint>()
            }
            Deprecated::NAME | Deprecated::SHORT_NAME => Self::new::<Deprecated>(),
            Diacritic::NAME | Diacritic::SHORT_NAME => Self::new::<Diacritic>(),
            #[allow(unreachable_patterns)] // no short name
            Emoji::NAME | Emoji::SHORT_NAME => Self::new::<Emoji>(),
            EmojiComponent::NAME | EmojiComponent::SHORT_NAME => Self::new::<EmojiComponent>(),
            EmojiModifier::NAME | EmojiModifier::SHORT_NAME => Self::new::<EmojiModifier>(),
            EmojiModifierBase::NAME | EmojiModifierBase::SHORT_NAME => {
                Self::new::<EmojiModifierBase>()
            }
            EmojiPresentation::NAME | EmojiPresentation::SHORT_NAME => {
                Self::new::<EmojiPresentation>()
            }
            ExtendedPictographic::NAME | ExtendedPictographic::SHORT_NAME => {
                Self::new::<ExtendedPictographic>()
            }
            Extender::NAME | Extender::SHORT_NAME => Self::new::<Extender>(),
            GraphemeBase::NAME | GraphemeBase::SHORT_NAME => Self::new::<GraphemeBase>(),
            GraphemeExtend::NAME | GraphemeExtend::SHORT_NAME => Self::new::<GraphemeExtend>(),
            HexDigit::NAME | HexDigit::SHORT_NAME => Self::new::<HexDigit>(),
            IdsBinaryOperator::NAME | IdsBinaryOperator::SHORT_NAME => {
                Self::new::<IdsBinaryOperator>()
            }
            IdsTrinaryOperator::NAME | IdsTrinaryOperator::SHORT_NAME => {
                Self::new::<IdsTrinaryOperator>()
            }
            IdContinue::NAME | IdContinue::SHORT_NAME => Self::new::<IdContinue>(),
            IdStart::NAME | IdStart::SHORT_NAME => Self::new::<IdStart>(),
            Ideographic::NAME | Ideographic::SHORT_NAME => Self::new::<Ideographic>(),
            JoinControl::NAME | JoinControl::SHORT_NAME => Self::new::<JoinControl>(),
            LogicalOrderException::NAME | LogicalOrderException::SHORT_NAME => {
                Self::new::<LogicalOrderException>()
            }
            Lowercase::NAME | Lowercase::SHORT_NAME => Self::new::<Lowercase>(),
            #[allow(unreachable_patterns)] // no short name
            Math::NAME | Math::SHORT_NAME => Self::new::<Math>(),
            NoncharacterCodePoint::NAME | NoncharacterCodePoint::SHORT_NAME => {
                Self::new::<NoncharacterCodePoint>()
            }
            PatternSyntax::NAME | PatternSyntax::SHORT_NAME => Self::new::<PatternSyntax>(),
            PatternWhiteSpace::NAME | PatternWhiteSpace::SHORT_NAME => {
                Self::new::<PatternWhiteSpace>()
            }
            QuotationMark::NAME | QuotationMark::SHORT_NAME => Self::new::<QuotationMark>(),
            #[allow(unreachable_patterns)] // no short name
            Radical::NAME | Radical::SHORT_NAME => Self::new::<Radical>(),
            RegionalIndicator::NAME | RegionalIndicator::SHORT_NAME => {
                Self::new::<RegionalIndicator>()
            }
            SentenceTerminal::NAME | SentenceTerminal::SHORT_NAME => {
                Self::new::<SentenceTerminal>()
            }
            SoftDotted::NAME | SoftDotted::SHORT_NAME => Self::new::<SoftDotted>(),
            TerminalPunctuation::NAME | TerminalPunctuation::SHORT_NAME => {
                Self::new::<TerminalPunctuation>()
            }
            UnifiedIdeograph::NAME | UnifiedIdeograph::SHORT_NAME => {
                Self::new::<UnifiedIdeograph>()
            }
            Uppercase::NAME | Uppercase::SHORT_NAME => Self::new::<Uppercase>(),
            VariationSelector::NAME | VariationSelector::SHORT_NAME => {
                Self::new::<VariationSelector>()
            }
            WhiteSpace::NAME | WhiteSpace::SHORT_NAME => Self::new::<WhiteSpace>(),
            XidContinue::NAME | XidContinue::SHORT_NAME => Self::new::<XidContinue>(),
            XidStart::NAME | XidStart::SHORT_NAME => Self::new::<XidStart>(),
            // Not an ECMA-262 property
            _ => return None,
        })
    }

    icu_provider::gen_buffer_data_constructors!(
        (prop: &[u8]) -> result: Option<Result<Self, DataError>>,
        functions: [
            new_for_ecma262: skip,
            try_new_for_ecma262_with_buffer_provider,
            try_new_for_ecma262_unstable,
            Self,
        ]
    );

    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_for_ecma262)]
    pub fn try_new_for_ecma262_unstable<P>(
        provider: &P,
        prop: &[u8],
    ) -> Option<Result<Self, DataError>>
    where
        P: ?Sized
            + DataProvider<PropertyBinaryAsciiHexDigitV1>
            + DataProvider<PropertyBinaryAlphabeticV1>
            + DataProvider<PropertyBinaryBidiControlV1>
            + DataProvider<PropertyBinaryBidiMirroredV1>
            + DataProvider<PropertyBinaryCaseIgnorableV1>
            + DataProvider<PropertyBinaryCasedV1>
            + DataProvider<PropertyBinaryChangesWhenCasefoldedV1>
            + DataProvider<PropertyBinaryChangesWhenCasemappedV1>
            + DataProvider<PropertyBinaryChangesWhenLowercasedV1>
            + DataProvider<PropertyBinaryChangesWhenNfkcCasefoldedV1>
            + DataProvider<PropertyBinaryChangesWhenTitlecasedV1>
            + DataProvider<PropertyBinaryChangesWhenUppercasedV1>
            + DataProvider<PropertyBinaryDashV1>
            + DataProvider<PropertyBinaryDefaultIgnorableCodePointV1>
            + DataProvider<PropertyBinaryDeprecatedV1>
            + DataProvider<PropertyBinaryDiacriticV1>
            + DataProvider<PropertyBinaryEmojiV1>
            + DataProvider<PropertyBinaryEmojiComponentV1>
            + DataProvider<PropertyBinaryEmojiModifierV1>
            + DataProvider<PropertyBinaryEmojiModifierBaseV1>
            + DataProvider<PropertyBinaryEmojiPresentationV1>
            + DataProvider<PropertyBinaryExtendedPictographicV1>
            + DataProvider<PropertyBinaryExtenderV1>
            + DataProvider<PropertyBinaryGraphemeBaseV1>
            + DataProvider<PropertyBinaryGraphemeExtendV1>
            + DataProvider<PropertyBinaryHexDigitV1>
            + DataProvider<PropertyBinaryIdsBinaryOperatorV1>
            + DataProvider<PropertyBinaryIdsTrinaryOperatorV1>
            + DataProvider<PropertyBinaryIdContinueV1>
            + DataProvider<PropertyBinaryIdStartV1>
            + DataProvider<PropertyBinaryIdeographicV1>
            + DataProvider<PropertyBinaryJoinControlV1>
            + DataProvider<PropertyBinaryLogicalOrderExceptionV1>
            + DataProvider<PropertyBinaryLowercaseV1>
            + DataProvider<PropertyBinaryMathV1>
            + DataProvider<PropertyBinaryNoncharacterCodePointV1>
            + DataProvider<PropertyBinaryPatternSyntaxV1>
            + DataProvider<PropertyBinaryPatternWhiteSpaceV1>
            + DataProvider<PropertyBinaryQuotationMarkV1>
            + DataProvider<PropertyBinaryRadicalV1>
            + DataProvider<PropertyBinaryRegionalIndicatorV1>
            + DataProvider<PropertyBinarySentenceTerminalV1>
            + DataProvider<PropertyBinarySoftDottedV1>
            + DataProvider<PropertyBinaryTerminalPunctuationV1>
            + DataProvider<PropertyBinaryUnifiedIdeographV1>
            + DataProvider<PropertyBinaryUppercaseV1>
            + DataProvider<PropertyBinaryVariationSelectorV1>
            + DataProvider<PropertyBinaryWhiteSpaceV1>
            + DataProvider<PropertyBinaryXidContinueV1>
            + DataProvider<PropertyBinaryXidStartV1>,
    {
        use crate::props::*;
        Some(match prop {
            AsciiHexDigit::NAME | AsciiHexDigit::SHORT_NAME => {
                Self::try_new_unstable::<AsciiHexDigit>(provider)
            }
            Alphabetic::NAME | Alphabetic::SHORT_NAME => {
                Self::try_new_unstable::<Alphabetic>(provider)
            }
            BidiControl::NAME | BidiControl::SHORT_NAME => {
                Self::try_new_unstable::<BidiControl>(provider)
            }
            BidiMirrored::NAME | BidiMirrored::SHORT_NAME => {
                Self::try_new_unstable::<BidiMirrored>(provider)
            }
            CaseIgnorable::NAME | CaseIgnorable::SHORT_NAME => {
                Self::try_new_unstable::<CaseIgnorable>(provider)
            }
            #[allow(unreachable_patterns)] // no short name
            Cased::NAME | Cased::SHORT_NAME => Self::try_new_unstable::<Cased>(provider),
            ChangesWhenCasefolded::NAME | ChangesWhenCasefolded::SHORT_NAME => {
                Self::try_new_unstable::<ChangesWhenCasefolded>(provider)
            }
            ChangesWhenCasemapped::NAME | ChangesWhenCasemapped::SHORT_NAME => {
                Self::try_new_unstable::<ChangesWhenCasemapped>(provider)
            }
            ChangesWhenLowercased::NAME | ChangesWhenLowercased::SHORT_NAME => {
                Self::try_new_unstable::<ChangesWhenLowercased>(provider)
            }
            ChangesWhenNfkcCasefolded::NAME | ChangesWhenNfkcCasefolded::SHORT_NAME => {
                Self::try_new_unstable::<ChangesWhenNfkcCasefolded>(provider)
            }
            ChangesWhenTitlecased::NAME | ChangesWhenTitlecased::SHORT_NAME => {
                Self::try_new_unstable::<ChangesWhenTitlecased>(provider)
            }
            ChangesWhenUppercased::NAME | ChangesWhenUppercased::SHORT_NAME => {
                Self::try_new_unstable::<ChangesWhenUppercased>(provider)
            }
            #[allow(unreachable_patterns)] // no short name
            Dash::NAME | Dash::SHORT_NAME => Self::try_new_unstable::<Dash>(provider),
            DefaultIgnorableCodePoint::NAME | DefaultIgnorableCodePoint::SHORT_NAME => {
                Self::try_new_unstable::<DefaultIgnorableCodePoint>(provider)
            }
            Deprecated::NAME | Deprecated::SHORT_NAME => {
                Self::try_new_unstable::<Deprecated>(provider)
            }
            Diacritic::NAME | Diacritic::SHORT_NAME => {
                Self::try_new_unstable::<Diacritic>(provider)
            }
            #[allow(unreachable_patterns)] // no short name
            Emoji::NAME | Emoji::SHORT_NAME => Self::try_new_unstable::<Emoji>(provider),
            EmojiComponent::NAME | EmojiComponent::SHORT_NAME => {
                Self::try_new_unstable::<EmojiComponent>(provider)
            }
            EmojiModifier::NAME | EmojiModifier::SHORT_NAME => {
                Self::try_new_unstable::<EmojiModifier>(provider)
            }
            EmojiModifierBase::NAME | EmojiModifierBase::SHORT_NAME => {
                Self::try_new_unstable::<EmojiModifierBase>(provider)
            }
            EmojiPresentation::NAME | EmojiPresentation::SHORT_NAME => {
                Self::try_new_unstable::<EmojiPresentation>(provider)
            }
            ExtendedPictographic::NAME | ExtendedPictographic::SHORT_NAME => {
                Self::try_new_unstable::<ExtendedPictographic>(provider)
            }
            Extender::NAME | Extender::SHORT_NAME => Self::try_new_unstable::<Extender>(provider),
            GraphemeBase::NAME | GraphemeBase::SHORT_NAME => {
                Self::try_new_unstable::<GraphemeBase>(provider)
            }
            GraphemeExtend::NAME | GraphemeExtend::SHORT_NAME => {
                Self::try_new_unstable::<GraphemeExtend>(provider)
            }
            HexDigit::NAME | HexDigit::SHORT_NAME => Self::try_new_unstable::<HexDigit>(provider),
            IdsBinaryOperator::NAME | IdsBinaryOperator::SHORT_NAME => {
                Self::try_new_unstable::<IdsBinaryOperator>(provider)
            }
            IdsTrinaryOperator::NAME | IdsTrinaryOperator::SHORT_NAME => {
                Self::try_new_unstable::<IdsTrinaryOperator>(provider)
            }
            IdContinue::NAME | IdContinue::SHORT_NAME => {
                Self::try_new_unstable::<IdContinue>(provider)
            }
            IdStart::NAME | IdStart::SHORT_NAME => Self::try_new_unstable::<IdStart>(provider),
            Ideographic::NAME | Ideographic::SHORT_NAME => {
                Self::try_new_unstable::<Ideographic>(provider)
            }
            JoinControl::NAME | JoinControl::SHORT_NAME => {
                Self::try_new_unstable::<JoinControl>(provider)
            }
            LogicalOrderException::NAME | LogicalOrderException::SHORT_NAME => {
                Self::try_new_unstable::<LogicalOrderException>(provider)
            }
            Lowercase::NAME | Lowercase::SHORT_NAME => {
                Self::try_new_unstable::<Lowercase>(provider)
            }
            #[allow(unreachable_patterns)] // no short name
            Math::NAME | Math::SHORT_NAME => Self::try_new_unstable::<Math>(provider),
            NoncharacterCodePoint::NAME | NoncharacterCodePoint::SHORT_NAME => {
                Self::try_new_unstable::<NoncharacterCodePoint>(provider)
            }
            PatternSyntax::NAME | PatternSyntax::SHORT_NAME => {
                Self::try_new_unstable::<PatternSyntax>(provider)
            }
            PatternWhiteSpace::NAME | PatternWhiteSpace::SHORT_NAME => {
                Self::try_new_unstable::<PatternWhiteSpace>(provider)
            }
            QuotationMark::NAME | QuotationMark::SHORT_NAME => {
                Self::try_new_unstable::<QuotationMark>(provider)
            }
            #[allow(unreachable_patterns)] // no short name
            Radical::NAME | Radical::SHORT_NAME => Self::try_new_unstable::<Radical>(provider),
            RegionalIndicator::NAME | RegionalIndicator::SHORT_NAME => {
                Self::try_new_unstable::<RegionalIndicator>(provider)
            }
            SentenceTerminal::NAME | SentenceTerminal::SHORT_NAME => {
                Self::try_new_unstable::<SentenceTerminal>(provider)
            }
            SoftDotted::NAME | SoftDotted::SHORT_NAME => {
                Self::try_new_unstable::<SoftDotted>(provider)
            }
            TerminalPunctuation::NAME | TerminalPunctuation::SHORT_NAME => {
                Self::try_new_unstable::<TerminalPunctuation>(provider)
            }
            UnifiedIdeograph::NAME | UnifiedIdeograph::SHORT_NAME => {
                Self::try_new_unstable::<UnifiedIdeograph>(provider)
            }
            Uppercase::NAME | Uppercase::SHORT_NAME => {
                Self::try_new_unstable::<Uppercase>(provider)
            }
            VariationSelector::NAME | VariationSelector::SHORT_NAME => {
                Self::try_new_unstable::<VariationSelector>(provider)
            }
            WhiteSpace::NAME | WhiteSpace::SHORT_NAME => {
                Self::try_new_unstable::<WhiteSpace>(provider)
            }
            XidContinue::NAME | XidContinue::SHORT_NAME => {
                Self::try_new_unstable::<XidContinue>(provider)
            }
            XidStart::NAME | XidStart::SHORT_NAME => Self::try_new_unstable::<XidStart>(provider),
            // Not an ECMA-262 property
            _ => return None,
        })
    }
}

Messung V0.5 in Prozent
C=92 H=90 G=90

¤ Dauer der Verarbeitung: 0.9 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002