Binary property

// Auto-generated by unicode-build. Do not edit by hand.
// Regenerate via:
//   make ucd-generate
//
// Source: PropList.txt + DerivedCoreProperties.txt +
// emoji/emoji-data.txt. The `BinaryProperty` type is a
// closed union — exhaustive `match` is compile-checked.

primitive PropASCIIHexDigit
  fun code(): String val => "ASCII_Hex_Digit"
  fun string(): String val => "ASCII_Hex_Digit"

primitive PropAlphabetic
  fun code(): String val => "Alphabetic"
  fun string(): String val => "Alphabetic"

primitive PropBidiControl
  fun code(): String val => "Bidi_Control"
  fun string(): String val => "Bidi_Control"

primitive PropCaseIgnorable
  fun code(): String val => "Case_Ignorable"
  fun string(): String val => "Case_Ignorable"

primitive PropCased
  fun code(): String val => "Cased"
  fun string(): String val => "Cased"

primitive PropChangesWhenCasefolded
  fun code(): String val => "Changes_When_Casefolded"
  fun string(): String val => "Changes_When_Casefolded"

primitive PropChangesWhenCasemapped
  fun code(): String val => "Changes_When_Casemapped"
  fun string(): String val => "Changes_When_Casemapped"

primitive PropChangesWhenLowercased
  fun code(): String val => "Changes_When_Lowercased"
  fun string(): String val => "Changes_When_Lowercased"

primitive PropChangesWhenTitlecased
  fun code(): String val => "Changes_When_Titlecased"
  fun string(): String val => "Changes_When_Titlecased"

primitive PropChangesWhenUppercased
  fun code(): String val => "Changes_When_Uppercased"
  fun string(): String val => "Changes_When_Uppercased"

primitive PropDash
  fun code(): String val => "Dash"
  fun string(): String val => "Dash"

primitive PropDefaultIgnorableCodePoint
  fun code(): String val => "Default_Ignorable_Code_Point"
  fun string(): String val => "Default_Ignorable_Code_Point"

primitive PropDeprecated
  fun code(): String val => "Deprecated"
  fun string(): String val => "Deprecated"

primitive PropDiacritic
  fun code(): String val => "Diacritic"
  fun string(): String val => "Diacritic"

primitive PropEmoji
  fun code(): String val => "Emoji"
  fun string(): String val => "Emoji"

primitive PropEmojiComponent
  fun code(): String val => "Emoji_Component"
  fun string(): String val => "Emoji_Component"

primitive PropEmojiModifier
  fun code(): String val => "Emoji_Modifier"
  fun string(): String val => "Emoji_Modifier"

primitive PropEmojiModifierBase
  fun code(): String val => "Emoji_Modifier_Base"
  fun string(): String val => "Emoji_Modifier_Base"

primitive PropEmojiPresentation
  fun code(): String val => "Emoji_Presentation"
  fun string(): String val => "Emoji_Presentation"

primitive PropExtendedPictographic
  fun code(): String val => "Extended_Pictographic"
  fun string(): String val => "Extended_Pictographic"

primitive PropExtender
  fun code(): String val => "Extender"
  fun string(): String val => "Extender"

primitive PropGraphemeBase
  fun code(): String val => "Grapheme_Base"
  fun string(): String val => "Grapheme_Base"

primitive PropGraphemeExtend
  fun code(): String val => "Grapheme_Extend"
  fun string(): String val => "Grapheme_Extend"

primitive PropGraphemeLink
  fun code(): String val => "Grapheme_Link"
  fun string(): String val => "Grapheme_Link"

primitive PropHexDigit
  fun code(): String val => "Hex_Digit"
  fun string(): String val => "Hex_Digit"

primitive PropHyphen
  fun code(): String val => "Hyphen"
  fun string(): String val => "Hyphen"

primitive PropIDSBinaryOperator
  fun code(): String val => "IDS_Binary_Operator"
  fun string(): String val => "IDS_Binary_Operator"

primitive PropIDSTrinaryOperator
  fun code(): String val => "IDS_Trinary_Operator"
  fun string(): String val => "IDS_Trinary_Operator"

primitive PropIDSUnaryOperator
  fun code(): String val => "IDS_Unary_Operator"
  fun string(): String val => "IDS_Unary_Operator"

primitive PropIDCompatMathContinue
  fun code(): String val => "ID_Compat_Math_Continue"
  fun string(): String val => "ID_Compat_Math_Continue"

primitive PropIDCompatMathStart
  fun code(): String val => "ID_Compat_Math_Start"
  fun string(): String val => "ID_Compat_Math_Start"

primitive PropIDContinue
  fun code(): String val => "ID_Continue"
  fun string(): String val => "ID_Continue"

primitive PropIDStart
  fun code(): String val => "ID_Start"
  fun string(): String val => "ID_Start"

primitive PropIdeographic
  fun code(): String val => "Ideographic"
  fun string(): String val => "Ideographic"

primitive PropInCB
  fun code(): String val => "InCB"
  fun string(): String val => "InCB"

primitive PropJoinControl
  fun code(): String val => "Join_Control"
  fun string(): String val => "Join_Control"

primitive PropLogicalOrderException
  fun code(): String val => "Logical_Order_Exception"
  fun string(): String val => "Logical_Order_Exception"

primitive PropLowercase
  fun code(): String val => "Lowercase"
  fun string(): String val => "Lowercase"

primitive PropMath
  fun code(): String val => "Math"
  fun string(): String val => "Math"

primitive PropModifierCombiningMark
  fun code(): String val => "Modifier_Combining_Mark"
  fun string(): String val => "Modifier_Combining_Mark"

primitive PropNoncharacterCodePoint
  fun code(): String val => "Noncharacter_Code_Point"
  fun string(): String val => "Noncharacter_Code_Point"

primitive PropOtherAlphabetic
  fun code(): String val => "Other_Alphabetic"
  fun string(): String val => "Other_Alphabetic"

primitive PropOtherDefaultIgnorableCodePoint
  fun code(): String val => "Other_Default_Ignorable_Code_Point"
  fun string(): String val => "Other_Default_Ignorable_Code_Point"

primitive PropOtherGraphemeExtend
  fun code(): String val => "Other_Grapheme_Extend"
  fun string(): String val => "Other_Grapheme_Extend"

primitive PropOtherIDContinue
  fun code(): String val => "Other_ID_Continue"
  fun string(): String val => "Other_ID_Continue"

primitive PropOtherIDStart
  fun code(): String val => "Other_ID_Start"
  fun string(): String val => "Other_ID_Start"

primitive PropOtherLowercase
  fun code(): String val => "Other_Lowercase"
  fun string(): String val => "Other_Lowercase"

primitive PropOtherMath
  fun code(): String val => "Other_Math"
  fun string(): String val => "Other_Math"

primitive PropOtherUppercase
  fun code(): String val => "Other_Uppercase"
  fun string(): String val => "Other_Uppercase"

primitive PropPatternSyntax
  fun code(): String val => "Pattern_Syntax"
  fun string(): String val => "Pattern_Syntax"

primitive PropPatternWhiteSpace
  fun code(): String val => "Pattern_White_Space"
  fun string(): String val => "Pattern_White_Space"

primitive PropPrependedConcatenationMark
  fun code(): String val => "Prepended_Concatenation_Mark"
  fun string(): String val => "Prepended_Concatenation_Mark"

primitive PropQuotationMark
  fun code(): String val => "Quotation_Mark"
  fun string(): String val => "Quotation_Mark"

primitive PropRadical
  fun code(): String val => "Radical"
  fun string(): String val => "Radical"

primitive PropRegionalIndicator
  fun code(): String val => "Regional_Indicator"
  fun string(): String val => "Regional_Indicator"

primitive PropSentenceTerminal
  fun code(): String val => "Sentence_Terminal"
  fun string(): String val => "Sentence_Terminal"

primitive PropSoftDotted
  fun code(): String val => "Soft_Dotted"
  fun string(): String val => "Soft_Dotted"

primitive PropTerminalPunctuation
  fun code(): String val => "Terminal_Punctuation"
  fun string(): String val => "Terminal_Punctuation"

primitive PropUnifiedIdeograph
  fun code(): String val => "Unified_Ideograph"
  fun string(): String val => "Unified_Ideograph"

primitive PropUppercase
  fun code(): String val => "Uppercase"
  fun string(): String val => "Uppercase"

primitive PropVariationSelector
  fun code(): String val => "Variation_Selector"
  fun string(): String val => "Variation_Selector"

primitive PropWhiteSpace
  fun code(): String val => "White_Space"
  fun string(): String val => "White_Space"

primitive PropXIDContinue
  fun code(): String val => "XID_Continue"
  fun string(): String val => "XID_Continue"

primitive PropXIDStart
  fun code(): String val => "XID_Start"
  fun string(): String val => "XID_Start"

type BinaryProperty is
  ( PropASCIIHexDigit
  | PropAlphabetic
  | PropBidiControl
  | PropCaseIgnorable
  | PropCased
  | PropChangesWhenCasefolded
  | PropChangesWhenCasemapped
  | PropChangesWhenLowercased
  | PropChangesWhenTitlecased
  | PropChangesWhenUppercased
  | PropDash
  | PropDefaultIgnorableCodePoint
  | PropDeprecated
  | PropDiacritic
  | PropEmoji
  | PropEmojiComponent
  | PropEmojiModifier
  | PropEmojiModifierBase
  | PropEmojiPresentation
  | PropExtendedPictographic
  | PropExtender
  | PropGraphemeBase
  | PropGraphemeExtend
  | PropGraphemeLink
  | PropHexDigit
  | PropHyphen
  | PropIDSBinaryOperator
  | PropIDSTrinaryOperator
  | PropIDSUnaryOperator
  | PropIDCompatMathContinue
  | PropIDCompatMathStart
  | PropIDContinue
  | PropIDStart
  | PropIdeographic
  | PropInCB
  | PropJoinControl
  | PropLogicalOrderException
  | PropLowercase
  | PropMath
  | PropModifierCombiningMark
  | PropNoncharacterCodePoint
  | PropOtherAlphabetic
  | PropOtherDefaultIgnorableCodePoint
  | PropOtherGraphemeExtend
  | PropOtherIDContinue
  | PropOtherIDStart
  | PropOtherLowercase
  | PropOtherMath
  | PropOtherUppercase
  | PropPatternSyntax
  | PropPatternWhiteSpace
  | PropPrependedConcatenationMark
  | PropQuotationMark
  | PropRadical
  | PropRegionalIndicator
  | PropSentenceTerminal
  | PropSoftDotted
  | PropTerminalPunctuation
  | PropUnifiedIdeograph
  | PropUppercase
  | PropVariationSelector
  | PropWhiteSpace
  | PropXIDContinue
  | PropXIDStart
  )

primitive BinaryProperties
  fun from_iso(s: String box): (BinaryProperty | None) =>
    match s
    | "ASCII_Hex_Digit" => PropASCIIHexDigit
    | "Alphabetic" => PropAlphabetic
    | "Bidi_Control" => PropBidiControl
    | "Case_Ignorable" => PropCaseIgnorable
    | "Cased" => PropCased
    | "Changes_When_Casefolded" => PropChangesWhenCasefolded
    | "Changes_When_Casemapped" => PropChangesWhenCasemapped
    | "Changes_When_Lowercased" => PropChangesWhenLowercased
    | "Changes_When_Titlecased" => PropChangesWhenTitlecased
    | "Changes_When_Uppercased" => PropChangesWhenUppercased
    | "Dash" => PropDash
    | "Default_Ignorable_Code_Point" => PropDefaultIgnorableCodePoint
    | "Deprecated" => PropDeprecated
    | "Diacritic" => PropDiacritic
    | "Emoji" => PropEmoji
    | "Emoji_Component" => PropEmojiComponent
    | "Emoji_Modifier" => PropEmojiModifier
    | "Emoji_Modifier_Base" => PropEmojiModifierBase
    | "Emoji_Presentation" => PropEmojiPresentation
    | "Extended_Pictographic" => PropExtendedPictographic
    | "Extender" => PropExtender
    | "Grapheme_Base" => PropGraphemeBase
    | "Grapheme_Extend" => PropGraphemeExtend
    | "Grapheme_Link" => PropGraphemeLink
    | "Hex_Digit" => PropHexDigit
    | "Hyphen" => PropHyphen
    | "IDS_Binary_Operator" => PropIDSBinaryOperator
    | "IDS_Trinary_Operator" => PropIDSTrinaryOperator
    | "IDS_Unary_Operator" => PropIDSUnaryOperator
    | "ID_Compat_Math_Continue" => PropIDCompatMathContinue
    | "ID_Compat_Math_Start" => PropIDCompatMathStart
    | "ID_Continue" => PropIDContinue
    | "ID_Start" => PropIDStart
    | "Ideographic" => PropIdeographic
    | "InCB" => PropInCB
    | "Join_Control" => PropJoinControl
    | "Logical_Order_Exception" => PropLogicalOrderException
    | "Lowercase" => PropLowercase
    | "Math" => PropMath
    | "Modifier_Combining_Mark" => PropModifierCombiningMark
    | "Noncharacter_Code_Point" => PropNoncharacterCodePoint
    | "Other_Alphabetic" => PropOtherAlphabetic
    | "Other_Default_Ignorable_Code_Point" => PropOtherDefaultIgnorableCodePoint
    | "Other_Grapheme_Extend" => PropOtherGraphemeExtend
    | "Other_ID_Continue" => PropOtherIDContinue
    | "Other_ID_Start" => PropOtherIDStart
    | "Other_Lowercase" => PropOtherLowercase
    | "Other_Math" => PropOtherMath
    | "Other_Uppercase" => PropOtherUppercase
    | "Pattern_Syntax" => PropPatternSyntax
    | "Pattern_White_Space" => PropPatternWhiteSpace
    | "Prepended_Concatenation_Mark" => PropPrependedConcatenationMark
    | "Quotation_Mark" => PropQuotationMark
    | "Radical" => PropRadical
    | "Regional_Indicator" => PropRegionalIndicator
    | "Sentence_Terminal" => PropSentenceTerminal
    | "Soft_Dotted" => PropSoftDotted
    | "Terminal_Punctuation" => PropTerminalPunctuation
    | "Unified_Ideograph" => PropUnifiedIdeograph
    | "Uppercase" => PropUppercase
    | "Variation_Selector" => PropVariationSelector
    | "White_Space" => PropWhiteSpace
    | "XID_Continue" => PropXIDContinue
    | "XID_Start" => PropXIDStart
    else None
    end