h*FzA      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij k l m n o p q r s t u v w x y z { | } ~                                                                                                                   0.3.0.1 (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 rangeunicode-data-parser ;unicode-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@.(c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(-  unicode-data-parser*Numeric value of a code point, if relevant unicode-data-parserAn entry from DerivedNumericValues.txt file7parse "0030 ; 0.0 ; ; 0 # Nd DIGIT ZERO"[Entry {range = SingleChar {start = '0'}, numericValue = Integer 0}]parse "0F33 ; -0.5 ; ; -1/2 # No TIBETAN DIGIT HALF ZERO"[Entry {range = SingleChar {start = '\3891'}, numericValue = Rational ((-1) % 2)}]parse "11FC0 ; 0.003125 ; ; 1/320 # No TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH"[Entry {range = SingleChar {start = '\73664'}, numericValue = Rational (1 % 320)}]parse "2159 ; 0.16666667 ; ; 1/6 # No VULGAR FRACTION ONE SIXTH"[Entry {range = SingleChar {start = '\8537'}, numericValue = Rational (1 % 6)}]unicode-data-parser A parser for DerivedNumericValues.txt    (c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(-Uunicode-data-parserAn entry from DerivedName.txt fileunicode-data-parser A parser for DerivedName.txt fileparse "0020 ; SPACE")[SingleChar {char = ' ', name = "SPACE"}]/parse "3400..4DBF ; CJK UNIFIED IDEOGRAPH-*"[CharRange {start = '\13312', end = '\19903', prefix = "CJK UNIFIED IDEOGRAPH-"}]7parse "18B00..18CD5 ; KHITAN SMALL SCRIPT CHARACTER-*"[CharRange {start = '\101120', end = '\101589', prefix = "KHITAN SMALL SCRIPT CHARACTER-"}]  (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-parserType of case folding$unicode-data-parserCommon case folding:, common mappings shared by both simple and full mappings.%unicode-data-parserFull case folding0, mappings that cause strings to grow in length.&unicode-data-parserSimple case folding5, mappings to single characters where different from %'unicode-data-parser Special case' for uppercase I and dotted uppercase I(unicode-data-parserAn entry from CaseFolding.txt file-unicode-data-parser A parser for CaseFolding.txt/parse "0041; C; 0061; # LATIN CAPITAL LETTER A"[Entry {char = 'A', caseFoldingType = CommonCaseFolding, caseFolding = "a"}]parse "0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE"[Entry {char = '\304', caseFoldingType = FullCaseFolding, caseFolding = "i\775"}]>parse "0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE"[Entry {char = '\304', caseFoldingType = SpecialCaseFolding, caseFolding = "i"}]unicode-data-parser File format:  code;  status;  mapping; # name -()*+,#$%&' -()*+,#$%&'(c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(-3unicode-data-parserAn entry from  Blocks.txt fileparse "0000..007F; Basic Latin"<[Entry {start = '\NUL', end = '\DEL', name = "Basic Latin"}]8parse "100000..10FFFF; Supplementary Private Use Area-B"[Entry {start = '\1048576', end = '\1114111', name = "Supplementary Private Use Area-B"}]8unicode-data-parser A parser for  Blocks.txt file834567834567(c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(-;unicode-data-parserType of name aliasparse "0000;NULL;control"[Entry {char = '\NUL', nameAliasType = Control, nameAlias = "NULL"}]parse "0000;NUL;abbreviation"[Entry {char = '\NUL', nameAliasType = Abbreviation, nameAlias = "NUL"}]&parse "0080;PADDING CHARACTER;figment"[Entry {char = '\128', nameAliasType = Figment, nameAlias = "PADDING CHARACTER"}]0parse "01A2;LATIN CAPITAL LETTER GHA;correction"[Entry {char = '\418', nameAliasType = Correction, nameAlias = "LATIN CAPITAL LETTER GHA"}]Aunicode-data-parserAn entry from NameAliases.txt fileFunicode-data-parser A parser for NameAliases.txt file FABCDE;=<>?@ FABCDE;=<>?@(c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(-Ounicode-data-parser 9https://www.unicode.org/reports/tr44/#Missing_ConventionsMissing conventionTunicode-data-parser 9https://www.unicode.org/reports/tr44/#Missing_ConventionsMissing conventionXunicode-data-parser Default ageYunicode-data-parserDefault general categoryZunicode-data-parser Default block[unicode-data-parserDefault script\unicode-data-parser Parser for @missing" conventions without property name>parseMissingConventionM "# @missing: 0000..10FFFF; Unassigned"Just (MissingConvention {range = CharRange {start = '\NUL', end = '\1114111'}, value = "Unassigned"})For further details, see: 9https://www.unicode.org/reports/tr44/#Missing_Conventions]unicode-data-parser Parser for @missing conventions with property nameparseMissingPropertyConventionM "# @missing: 0000..10FFFF; Decomposition_Mapping; "Just (MissingPropertyConvention {range = CharRange {start = '\NUL', end = '\1114111'}, property = "Decomposition_Mapping", value = ""})For further details, see: 9https://www.unicode.org/reports/tr44/#Missing_ConventionsXZY[TUVWOPQSR\]XZY[TUVWOPQSR\](c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(-"bunicode-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"}]gunicode-data-parser6A parser for properties files with multiple propertiesgbcdfegbcdfe (c) 2024 Pierre Le Marredev@wismill.eu experimental Safe-Inferred "%&(-'&junicode-data-parser>An entry from a properties file with multiple values per entrynunicode-data-parser8An entry from a properties file with one value per entryrunicode-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"}]sunicode-data-parserparse "blk; Aegean_Numbers ; Aegean_Numbers"[Entry {property = "blk", value = PropertyValue {shortName = "Aegean_Numbers", longName = "Aegean_Numbers", numericValue = Nothing, aliases = []}}]unicode-data-parser An entry in UnicodeData.txt.unicode-data-parser,Core characteristics of a Unicode code pointunicode-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..254unicode-data-parser%Unicode decomposition of a code pointunicode-data-parserSee: https://www.unicode.org/reports/tr44/#Character_Decomposition_Mappingsunicode-data-parserSee: 6https://www.unicode.org/reports/tr44/#General_Categoryunicode-data-parserLetter, Uppercaseunicode-data-parserLetter, Lowercaseunicode-data-parserLetter, Titlecaseunicode-data-parserLetter, Modifierunicode-data-parser Letter, Otherunicode-data-parserMark, Non-Spacingunicode-data-parserMark, Spacing Combiningunicode-data-parserMark, Enclosingunicode-data-parserNumber, Decimalunicode-data-parserNumber, Letterunicode-data-parser Number, Otherunicode-data-parserPunctuation, Connectorunicode-data-parserPunctuation, Dashunicode-data-parserPunctuation, Openunicode-data-parserPunctuation, Closeunicode-data-parserPunctuation, Initial quoteunicode-data-parserPunctuation, Final quoteunicode-data-parserPunctuation, Otherunicode-data-parser Symbol, Mathunicode-data-parserSymbol, Currencyunicode-data-parserSymbol, Modifierunicode-data-parser Symbol, Otherunicode-data-parserSeparator, Spaceunicode-data-parserSeparator, Lineunicode-data-parserSeparator, Paragraphunicode-data-parserOther, Controlunicode-data-parser Other, Formatunicode-data-parserOther, Surrogateunicode-data-parserOther, Private Useunicode-data-parserOther, Not Assignedunicode-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_Type !"#$%&'()*+,-./0123456789+:;<=>?@ABBCDEFFGHIJKLMNOPQRST U U V W    T  X Y Z   [ [ \ ] ^ _   S T  ` a   b c d d e e f g h i   + j    k l m n    o p p q r s t u v w x y z { | { } ~                                                                #     2unicode-data-parser-0.3.0.1-L59uF7S4XH8G59WtuY0DPm'Unicode.CharacterDatabase.Parser.Common?Unicode.CharacterDatabase.Parser.Extracted.DerivedNumericValues6Unicode.CharacterDatabase.Parser.Extracted.DerivedName,Unicode.CharacterDatabase.Parser.CaseFolding'Unicode.CharacterDatabase.Parser.Blocks,Unicode.CharacterDatabase.Parser.NameAliases4Unicode.CharacterDatabase.Parser.Properties.Defaults4Unicode.CharacterDatabase.Parser.Properties.Multiple2Unicode.CharacterDatabase.Parser.Properties.Single5Unicode.CharacterDatabase.Parser.PropertyValueAliases.Unicode.CharacterDatabase.Parser.SpecialCasing,Unicode.CharacterDatabase.Parser.UnicodeDataunicode-data-parser)Unicode.CharacterDatabase.Parser.Internal NumericValue NotNumericIntegerRationalCodePointRange SingleChar CharRange$sel:start:SingleChar$sel:end:SingleCharEntry$sel:range:Entry$sel:numericValue:Entryparse $fEqEntry $fShowEntry$fEqNumericValue$fShowNumericValue$sel:char:SingleChar$sel:name:SingleChar$sel:prefix:SingleCharparseCodePointparseCodePointList parseListCaseFoldingTypeCommonCaseFoldingFullCaseFoldingSimpleCaseFoldingSpecialCaseFolding$sel:char:Entry$sel:caseFoldingType:Entry$sel:caseFolding:Entry$fEqCaseFoldingType$fOrdCaseFoldingType$fShowCaseFoldingType$sel:start:Entry$sel:end:Entry$sel:name:Entry AliasType CorrectionControl AlternateFigment Abbreviation$sel:nameAliasType:Entry$sel:nameAlias:Entry$fEnumAliasType$fBoundedAliasType $fEqAliasType$fOrdAliasType$fReadAliasType$fShowAliasTypeMissingPropertyConvention$$sel:range:MissingPropertyConvention'$sel:property:MissingPropertyConvention$$sel:value:MissingPropertyConventionMissingConvention$sel:range:MissingConvention$sel:value:MissingConvention defaultAgedefaultGeneralCategory defaultBlock defaultScriptparseMissingConventionMparseMissingPropertyConventionM$fEqMissingPropertyConvention$fShowMissingPropertyConvention$fEqMissingConvention$fShowMissingConvention$sel:property:Entry$sel:value:EntryEntryMultipleValues$sel:range:EntryMultipleValues$sel:values:EntryMultipleValuesparseMultipleValues$fEqEntryMultipleValues$fShowEntryMultipleValues PropertyValue$sel:shortName:PropertyValue$sel:longName:PropertyValue$sel:numericValue:PropertyValue$sel:aliases:PropertyValue$fEqPropertyValueAlias$fShowPropertyValueAlias$fEqPropertyValue$fShowPropertyValueSpecialCasingCondition SpecialCasing$sel:lower:SpecialCasing$sel:title:SpecialCasing$sel:upper:SpecialCasing$sel:conditions:SpecialCasing$sel:specialCasing:Entry$fEqSpecialCasing$fShowSpecialCasing$fEqSpecialCasingCondition$fShowSpecialCasingCondition$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 SemiColonSlashPeriodCommaAsteriskHashTagNewLine withParserparseCodePointMbase GHC.MaybeNothingparseCodePointRangeparseCodePointRange'parseNumericValueparseBoolValue Data.OldListwordsparseSpecialCasingLine FirstCodecombineparseDetailedCharparseDecomposition