h*#Q       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy0.2.0(c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(-unicode-data-parser*Numeric value of a code point, if relevantunicode-data-parserA Unicode code point rangezunicode-data-parser ;{unicode-data-parser /|unicode-data-parser .}unicode-data-parser ,~unicode-data-parser #unicode-data-parser '\n'unicode-data-parser'Use the given parser to parse each lineunicode-data-parser+Parse a code point formatted as hexadecimalWarning:! raise an error on invalid input.parseCodePoint "0061"'a'unicode-data-parser7Parse a code point formatted as hexadecimal, or return  on an empty string.Warning:! raise an error on invalid input.parseCodePointM "0061"Just 'a'parseCodePointM ""Nothing See also: .unicode-data-parserParse  AAAA..BBBB range or single code pointunicode-data-parserParse  AAAA..BBBB rangeunicode-data-parserSee: 3https://www.unicode.org/reports/tr44/#Numeric_Valueunicode-data-parser!Parse boolean values @Y@ and @N@.}~|z{(c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(-& unicode-data-parser+Parse a code point formatted as hexadecimalWarning:! raise an error on invalid input.parseCodePoint "0061"'a' unicode-data-parserParse a list of code points unicode-data-parser'Parse space-separated list, similar to .   (c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(- ) unicode-data-parser Default age unicode-data-parserDefault general categoryunicode-data-parserDefault script  (c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(- ?unicode-data-parser8An entry from a properties file with multiple propertiesparse "0009..000D ; White_Space # Cc [5] .."[Entry {range = CharRange {start = '\t', end = '\r'}, property = "White_Space", value = Nothing}]parse "061C ; Bidi_Control # Cf ARABIC LETTER MARK"[Entry {range = SingleChar {start = '\1564'}, property = "Bidi_Control", value = Nothing}]parse "037A ; FC_NFKC; 0020 03B9 # Lm GREEK YPOGEGRAMMENI"[Entry {range = SingleChar {start = '\890'}, property = "FC_NFKC", value = Just "0020 03B9"}]unicode-data-parser6A parser for properties files with multiple properties(c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(-runicode-data-parser>An entry from a properties file with multiple values per entryunicode-data-parser8An entry from a properties file with one value per entryunicode-data-parser6A parser for properties files with one value per entryparse "102E0 ; Arab Copt # Mn COPTIC EPACT THOUSANDS MARK"[Entry {range = SingleChar {start = '\66272'}, value = "Arab Copt"}];parse "1CF7 ; Beng # Mc VEDIC SIGN ATIKRAMA">[Entry {range = SingleChar {start = '\7415'}, value = "Beng"}]parse "1CDE..1CDF ; Deva # Mn [2] VEDIC TONE TWO DOTS BELOW..VEDIC TONE THREE DOTS BELOW"[Entry {range = CharRange {start = '\7390', end = '\7391'}, value = "Deva"}]parse "1CD0 ; Beng Deva Gran Knda # Mn VEDIC TONE KARSHANA"[Entry {range = SingleChar {start = '\7376'}, value = "Beng Deva Gran Knda"}] unicode-data-parser%unicode-data-parser An entry in UnicodeData.txt.)unicode-data-parser,Core characteristics of a Unicode code point+unicode-data-parserIn case of a range, the range@s name. It is better to use the names from DerivedName.txt.-unicode-data-parserValue in the range 0..2545unicode-data-parser%Unicode decomposition of a code point:unicode-data-parserSee: https://www.unicode.org/reports/tr44/#Character_Decomposition_MappingsLunicode-data-parserSee: 6https://www.unicode.org/reports/tr44/#General_CategoryMunicode-data-parserLetter, UppercaseNunicode-data-parserLetter, LowercaseOunicode-data-parserLetter, TitlecasePunicode-data-parserLetter, ModifierQunicode-data-parser Letter, OtherRunicode-data-parserMark, Non-SpacingSunicode-data-parserMark, Spacing CombiningTunicode-data-parserMark, EnclosingUunicode-data-parserNumber, DecimalVunicode-data-parserNumber, LetterWunicode-data-parser Number, OtherXunicode-data-parserPunctuation, ConnectorYunicode-data-parserPunctuation, DashZunicode-data-parserPunctuation, Open[unicode-data-parserPunctuation, Close\unicode-data-parserPunctuation, Initial quote]unicode-data-parserPunctuation, Final quote^unicode-data-parserPunctuation, Other_unicode-data-parser Symbol, Math`unicode-data-parserSymbol, Currencyaunicode-data-parserSymbol, Modifierbunicode-data-parser Symbol, Othercunicode-data-parserSeparator, Spacedunicode-data-parserSeparator, Lineeunicode-data-parserSeparator, Paragraphfunicode-data-parserOther, Controlgunicode-data-parser Other, Formathunicode-data-parserOther, Surrogateiunicode-data-parserOther, Private Usejunicode-data-parserOther, Not Assignedlunicode-data-parser Parser for 5https://www.unicode.org/reports/tr44/#UnicodeData.txtUnicodeData.txt file:{ traverse_ print . parse $7 "0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;\n\ \00A8;DIAERESIS;Sk;0;ON; 0020 0308;;;;N;SPACING DIAERESIS;;;;\n\7 \17000;;Lo;0;L;;;;;N;;;;;\n\6 \187F7;;Lo;0;L;;;;;N;;;;;\n":}Entry {range = SingleChar {start = 'A'}, details = CharDetails {name = "LATIN CAPITAL LETTER A", generalCategory = Lu, combiningClass = 0, bidiClass = "L", bidiMirrored = False, decomposition = Self, numericValue = NotNumeric, simpleUpperCaseMapping = Nothing, simpleLowerCaseMapping = Just 'a', simpleTitleCaseMapping = Nothing}}Entry {range = SingleChar {start = '\168'}, details = CharDetails {name = "DIAERESIS", generalCategory = Sk, combiningClass = 0, bidiClass = "ON", bidiMirrored = False, decomposition = Decomposition {decompositionType = Compat, decompositionMapping = " \776"}, numericValue = NotNumeric, simpleUpperCaseMapping = Nothing, simpleLowerCaseMapping = Nothing, simpleTitleCaseMapping = Nothing}}Entry {range = CharRange {start = '\94208', end = '\100343'}, details = CharDetails {name = "Tangut Ideograph", generalCategory = Lo, combiningClass = 0, bidiClass = "L", bidiMirrored = False, decomposition = Self, numericValue = NotNumeric, simpleUpperCaseMapping = Nothing, simpleLowerCaseMapping = Nothing, simpleTitleCaseMapping = Nothing}}unicode-data-parserCombine with previous line See: *https://www.unicode.org/reports/tr44/#Nameunicode-data-parserParse a single entry of UnicodeData.txtunicode-data-parserSee: 8https://www.unicode.org/reports/tr44/#Decomposition_Typel%&'()*,+-./01234LkjMNOPQRSTUVWXYZ[\]^_`abcdefghi:;<=>?@ABCDEFGHIJK57689l%&'()*,+-./01234LkjMNOPQRSTUVWXYZ[\]^_`abcdefghik:;<=>?@ABCDEFGHIJK57689      !"#$%%&'()*+,-./01023456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~y0unicode-data-parser-0.2.0-8GXvmVsVBvjCDGzU81PDmg'Unicode.CharacterDatabase.Parser.Common4Unicode.CharacterDatabase.Parser.Properties.Defaults4Unicode.CharacterDatabase.Parser.Properties.Multiple2Unicode.CharacterDatabase.Parser.Properties.Single,Unicode.CharacterDatabase.Parser.UnicodeDataunicode-data-parser)Unicode.CharacterDatabase.Parser.Internal NumericValue NotNumericIntegerRationalCodePointRange SingleChar CharRange$sel:start:SingleChar$sel:end:SingleCharparseCodePointparseCodePointList parseList defaultAgedefaultGeneralCategory defaultScriptEntry$sel:range:Entry$sel:property:Entry$sel:value:Entryparse $fEqEntry $fShowEntryEntryMultipleValues$sel:range:EntryMultipleValues$sel:values:EntryMultipleValuesparseMultipleValues$fEqEntryMultipleValues$fShowEntryMultipleValues$sel:details:Entry CharDetails$sel:name:CharDetails $sel:generalCategory:CharDetails$sel:combiningClass:CharDetails$sel:bidiClass:CharDetails$sel:bidiMirrored:CharDetails$sel:decomposition:CharDetails$sel:numericValue:CharDetails'$sel:simpleUpperCaseMapping:CharDetails'$sel:simpleLowerCaseMapping:CharDetails'$sel:simpleTitleCaseMapping:CharDetails DecompositionSelf$sel:decompositionType:Self$sel:decompositionMapping:SelfDecompositionType CanonicalCompatFontNoBreakInitialMedialFinalIsolatedCircleSuperSubVerticalWideNarrowSmallSquareFractionGeneralCategoryLuLlLtLmLoMnMcMeNdNlNoPcPdPsPePiPfPoSmScSkSoZsZlZpCcCfCsCoCnDefaultGeneralCategory$fEqCharDetails$fShowCharDetails$fShowDecomposition$fEqDecomposition$fShowDecompositionType$fEqDecompositionType$fBoundedGeneralCategory$fEnumGeneralCategory$fEqGeneralCategory$fShowGeneralCategory$fReadGeneralCategory SemiColonSlashPeriodCommaHashTagNewLine withParserparseCodePointMbase GHC.MaybeNothingparseCodePointRangeparseCodePointRange'parseNumericValueparseBoolValue Data.OldListwords FirstCodecombineparseDetailedCharparseDecomposition