note description: "Raw data of Unicode properties." class SC_LANGUAGE_DATA feature -- Access Newlines: ARRAY [READABLE_STRING_32] -- Unicode newlines, maybe more than one character. -- Sorted by decreasing length. Extended Backus-Naur Form: -- (\u000D\u000A) | [\u000A-\u000D \u0085 \u2028 \u2029]. once create {ARRAY [STRING_32]} Result.make_empty Result.compare_objects -- Carriage return followed by line feed. -- This newline has multiple characters. Result.force ("%R%N", 1) -- Line feed. Result.force ("%N", 2) -- Vertical tab. Result.force ("%/11/", 3) -- Form feed. Result.force ("%F", 4) -- Carriage return. Result.force ("%R", 5) -- Next line. Result.force ("%/133/", 6) -- Line separator. Result.force (create {STRING_32}.make_filled ('%/0x2028/', 1), 7) -- Paragraph separator. Result.force (create {STRING_32}.make_filled ('%/0x2029/', 1), 8) ensure nonempty: not Result.is_empty newlines_nonempty: across newlines as newline all not newline.item.is_empty end sorted: across 2 |..| Result.count as index all Result [index.item - 1].count >= Result [index.item].count end object_comparison: Result.object_comparison end Middle_letter: ARRAY [CHARACTER_32] -- All Unicode characters with word break property MidLetter. once Result := <<'%/0x3A/', '%/0xB7/', '%/0x387/', '%/0x5F4/', '%/0x2027/', '%/0xFE13/', '%/0xFE55/', '%/0xFF1A/'>> ensure nonempty: not Result.is_empty sorted: across 2 |..| Result.count as index all Result [index.item - 1] < Result [index.item] end end Middle_number_letter: ARRAY [CHARACTER_32] -- All Unicode characters with word break property MidNumLet. once Result := <<'%/0x27/', '%/0x2E/', '%/0x2018/', '%/0x2019/', '%/0x2024/', '%/0xFE52/', '%/0xFF07/', '%/0xFF0E/'>> ensure nonempty: not Result.is_empty sorted: across 2 |..| Result.count as index all Result [index.item - 1] < Result [index.item] end end Letter_intervals_sorted: ARRAY [TUPLE [base, length: INTEGER]] -- All Unicode code points of general category letter as sorted array of -- intervals with base code point and cardinality. Makes it possible to -- efficiently decide whether given character is element of set. once create Result.make_filled ([0, 0], 1, 435) Result [1] := [65, 26] Result [2] := [97, 26] Result [3] := [170, 1] Result [4] := [181, 1] Result [5] := [186, 1] Result [6] := [192, 23] Result [7] := [216, 31] Result [8] := [248, 458] Result [9] := [710, 12] Result [10] := [736, 5] Result [11] := [748, 1] Result [12] := [750, 1] Result [13] := [880, 5] Result [14] := [886, 2] Result [15] := [890, 4] Result [16] := [902, 1] Result [17] := [904, 3] Result [18] := [908, 1] Result [19] := [910, 20] Result [20] := [931, 83] Result [21] := [1015, 139] Result [22] := [1162, 158] Result [23] := [1329, 38] Result [24] := [1369, 1] Result [25] := [1377, 39] Result [26] := [1488, 27] Result [27] := [1520, 3] Result [28] := [1568, 43] Result [29] := [1646, 2] Result [30] := [1649, 99] Result [31] := [1749, 1] Result [32] := [1765, 2] Result [33] := [1774, 2] Result [34] := [1786, 3] Result [35] := [1791, 1] Result [36] := [1808, 1] Result [37] := [1810, 30] Result [38] := [1869, 89] Result [39] := [1969, 1] Result [40] := [1994, 33] Result [41] := [2036, 2] Result [42] := [2042, 1] Result [43] := [2048, 22] Result [44] := [2074, 1] Result [45] := [2084, 1] Result [46] := [2088, 1] Result [47] := [2112, 25] Result [48] := [2308, 54] Result [49] := [2365, 1] Result [50] := [2384, 1] Result [51] := [2392, 10] Result [52] := [2417, 7] Result [53] := [2425, 7] Result [54] := [2437, 8] Result [55] := [2447, 2] Result [56] := [2451, 22] Result [57] := [2474, 7] Result [58] := [2482, 1] Result [59] := [2486, 4] Result [60] := [2493, 1] Result [61] := [2510, 1] Result [62] := [2524, 2] Result [63] := [2527, 3] Result [64] := [2544, 2] Result [65] := [2565, 6] Result [66] := [2575, 2] Result [67] := [2579, 22] Result [68] := [2602, 7] Result [69] := [2610, 2] Result [70] := [2613, 2] Result [71] := [2616, 2] Result [72] := [2649, 4] Result [73] := [2654, 1] Result [74] := [2674, 3] Result [75] := [2693, 9] Result [76] := [2703, 3] Result [77] := [2707, 22] Result [78] := [2730, 7] Result [79] := [2738, 2] Result [80] := [2741, 5] Result [81] := [2749, 1] Result [82] := [2768, 1] Result [83] := [2784, 2] Result [84] := [2821, 8] Result [85] := [2831, 2] Result [86] := [2835, 22] Result [87] := [2858, 7] Result [88] := [2866, 2] Result [89] := [2869, 5] Result [90] := [2877, 1] Result [91] := [2908, 2] Result [92] := [2911, 3] Result [93] := [2929, 1] Result [94] := [2947, 1] Result [95] := [2949, 6] Result [96] := [2958, 3] Result [97] := [2962, 4] Result [98] := [2969, 2] Result [99] := [2972, 1] Result [100] := [2974, 2] Result [101] := [2979, 2] Result [102] := [2984, 3] Result [103] := [2990, 12] Result [104] := [3024, 1] Result [105] := [3077, 8] Result [106] := [3086, 3] Result [107] := [3090, 23] Result [108] := [3114, 10] Result [109] := [3125, 5] Result [110] := [3133, 1] Result [111] := [3160, 2] Result [112] := [3168, 2] Result [113] := [3205, 8] Result [114] := [3214, 3] Result [115] := [3218, 23] Result [116] := [3242, 10] Result [117] := [3253, 5] Result [118] := [3261, 1] Result [119] := [3294, 1] Result [120] := [3296, 2] Result [121] := [3313, 2] Result [122] := [3333, 8] Result [123] := [3342, 3] Result [124] := [3346, 41] Result [125] := [3389, 1] Result [126] := [3406, 1] Result [127] := [3424, 2] Result [128] := [3450, 6] Result [129] := [3461, 18] Result [130] := [3482, 24] Result [131] := [3507, 9] Result [132] := [3517, 1] Result [133] := [3520, 7] Result [134] := [3585, 48] Result [135] := [3634, 2] Result [136] := [3648, 7] Result [137] := [3713, 2] Result [138] := [3716, 1] Result [139] := [3719, 2] Result [140] := [3722, 1] Result [141] := [3725, 1] Result [142] := [3732, 4] Result [143] := [3737, 7] Result [144] := [3745, 3] Result [145] := [3749, 1] Result [146] := [3751, 1] Result [147] := [3754, 2] Result [148] := [3757, 4] Result [149] := [3762, 2] Result [150] := [3773, 1] Result [151] := [3776, 5] Result [152] := [3782, 1] Result [153] := [3804, 2] Result [154] := [3840, 1] Result [155] := [3904, 8] Result [156] := [3913, 36] Result [157] := [3976, 5] Result [158] := [4096, 43] Result [159] := [4159, 1] Result [160] := [4176, 6] Result [161] := [4186, 4] Result [162] := [4193, 1] Result [163] := [4197, 2] Result [164] := [4206, 3] Result [165] := [4213, 13] Result [166] := [4238, 1] Result [167] := [4256, 38] Result [168] := [4304, 43] Result [169] := [4348, 1] Result [170] := [4352, 329] Result [171] := [4682, 4] Result [172] := [4688, 7] Result [173] := [4696, 1] Result [174] := [4698, 4] Result [175] := [4704, 41] Result [176] := [4746, 4] Result [177] := [4752, 33] Result [178] := [4786, 4] Result [179] := [4792, 7] Result [180] := [4800, 1] Result [181] := [4802, 4] Result [182] := [4808, 15] Result [183] := [4824, 57] Result [184] := [4882, 4] Result [185] := [4888, 67] Result [186] := [4992, 16] Result [187] := [5024, 85] Result [188] := [5121, 620] Result [189] := [5743, 17] Result [190] := [5761, 26] Result [191] := [5792, 75] Result [192] := [5888, 13] Result [193] := [5902, 4] Result [194] := [5920, 18] Result [195] := [5952, 18] Result [196] := [5984, 13] Result [197] := [5998, 3] Result [198] := [6016, 52] Result [199] := [6103, 1] Result [200] := [6108, 1] Result [201] := [6176, 88] Result [202] := [6272, 41] Result [203] := [6314, 1] Result [204] := [6320, 70] Result [205] := [6400, 29] Result [206] := [6480, 30] Result [207] := [6512, 5] Result [208] := [6528, 44] Result [209] := [6593, 7] Result [210] := [6656, 23] Result [211] := [6688, 53] Result [212] := [6823, 1] Result [213] := [6917, 47] Result [214] := [6981, 7] Result [215] := [7043, 30] Result [216] := [7086, 2] Result [217] := [7104, 38] Result [218] := [7168, 36] Result [219] := [7245, 3] Result [220] := [7258, 36] Result [221] := [7401, 4] Result [222] := [7406, 4] Result [223] := [7424, 192] Result [224] := [7680, 278] Result [225] := [7960, 6] Result [226] := [7968, 38] Result [227] := [8008, 6] Result [228] := [8016, 8] Result [229] := [8025, 1] Result [230] := [8027, 1] Result [231] := [8029, 1] Result [232] := [8031, 31] Result [233] := [8064, 53] Result [234] := [8118, 7] Result [235] := [8126, 1] Result [236] := [8130, 3] Result [237] := [8134, 7] Result [238] := [8144, 4] Result [239] := [8150, 6] Result [240] := [8160, 13] Result [241] := [8178, 3] Result [242] := [8182, 7] Result [243] := [8305, 1] Result [244] := [8319, 1] Result [245] := [8336, 13] Result [246] := [8450, 1] Result [247] := [8455, 1] Result [248] := [8458, 10] Result [249] := [8469, 1] Result [250] := [8473, 5] Result [251] := [8484, 1] Result [252] := [8486, 1] Result [253] := [8488, 1] Result [254] := [8490, 4] Result [255] := [8495, 11] Result [256] := [8508, 4] Result [257] := [8517, 5] Result [258] := [8526, 1] Result [259] := [8579, 2] Result [260] := [11264, 47] Result [261] := [11312, 47] Result [262] := [11360, 133] Result [263] := [11499, 4] Result [264] := [11520, 38] Result [265] := [11568, 54] Result [266] := [11631, 1] Result [267] := [11648, 23] Result [268] := [11680, 7] Result [269] := [11688, 7] Result [270] := [11696, 7] Result [271] := [11704, 7] Result [272] := [11712, 7] Result [273] := [11720, 7] Result [274] := [11728, 7] Result [275] := [11736, 7] Result [276] := [11823, 1] Result [277] := [12293, 2] Result [278] := [12337, 5] Result [279] := [12347, 2] Result [280] := [12353, 86] Result [281] := [12445, 3] Result [282] := [12449, 90] Result [283] := [12540, 4] Result [284] := [12549, 41] Result [285] := [12593, 94] Result [286] := [12704, 27] Result [287] := [12784, 16] Result [288] := [13312, 6582] Result [289] := [19968, 20940] Result [290] := [40960, 1165] Result [291] := [42192, 46] Result [292] := [42240, 269] Result [293] := [42512, 16] Result [294] := [42538, 2] Result [295] := [42560, 47] Result [296] := [42623, 25] Result [297] := [42656, 70] Result [298] := [42775, 9] Result [299] := [42786, 103] Result [300] := [42891, 4] Result [301] := [42896, 2] Result [302] := [42912, 10] Result [303] := [43002, 8] Result [304] := [43011, 3] Result [305] := [43015, 4] Result [306] := [43020, 23] Result [307] := [43072, 52] Result [308] := [43138, 50] Result [309] := [43250, 6] Result [310] := [43259, 1] Result [311] := [43274, 28] Result [312] := [43312, 23] Result [313] := [43360, 29] Result [314] := [43396, 47] Result [315] := [43471, 1] Result [316] := [43520, 41] Result [317] := [43584, 3] Result [318] := [43588, 8] Result [319] := [43616, 23] Result [320] := [43642, 1] Result [321] := [43648, 48] Result [322] := [43697, 1] Result [323] := [43701, 2] Result [324] := [43705, 5] Result [325] := [43712, 1] Result [326] := [43714, 1] Result [327] := [43739, 3] Result [328] := [43777, 6] Result [329] := [43785, 6] Result [330] := [43793, 6] Result [331] := [43808, 7] Result [332] := [43816, 7] Result [333] := [43968, 35] Result [334] := [44032, 11172] Result [335] := [55216, 23] Result [336] := [55243, 49] Result [337] := [63744, 302] Result [338] := [64048, 62] Result [339] := [64112, 106] Result [340] := [64256, 7] Result [341] := [64275, 5] Result [342] := [64285, 1] Result [343] := [64287, 10] Result [344] := [64298, 13] Result [345] := [64312, 5] Result [346] := [64318, 1] Result [347] := [64320, 2] Result [348] := [64323, 2] Result [349] := [64326, 108] Result [350] := [64467, 363] Result [351] := [64848, 64] Result [352] := [64914, 54] Result [353] := [65008, 12] Result [354] := [65136, 5] Result [355] := [65142, 135] Result [356] := [65313, 26] Result [357] := [65345, 26] Result [358] := [65382, 89] Result [359] := [65474, 6] Result [360] := [65482, 6] Result [361] := [65490, 6] Result [362] := [65498, 3] Result [363] := [65536, 12] Result [364] := [65549, 26] Result [365] := [65576, 19] Result [366] := [65596, 2] Result [367] := [65599, 15] Result [368] := [65616, 14] Result [369] := [65664, 123] Result [370] := [66176, 29] Result [371] := [66208, 49] Result [372] := [66304, 31] Result [373] := [66352, 17] Result [374] := [66370, 8] Result [375] := [66432, 30] Result [376] := [66464, 36] Result [377] := [66504, 8] Result [378] := [66560, 158] Result [379] := [67584, 6] Result [380] := [67592, 1] Result [381] := [67594, 44] Result [382] := [67639, 2] Result [383] := [67644, 1] Result [384] := [67647, 23] Result [385] := [67840, 22] Result [386] := [67872, 26] Result [387] := [68096, 1] Result [388] := [68112, 4] Result [389] := [68117, 3] Result [390] := [68121, 27] Result [391] := [68192, 29] Result [392] := [68352, 54] Result [393] := [68416, 22] Result [394] := [68448, 19] Result [395] := [68608, 73] Result [396] := [69635, 53] Result [397] := [69763, 45] Result [398] := [73728, 879] Result [399] := [77824, 1071] Result [400] := [92160, 569] Result [401] := [110592, 2] Result [402] := [119808, 85] Result [403] := [119894, 71] Result [404] := [119966, 2] Result [405] := [119970, 1] Result [406] := [119973, 2] Result [407] := [119977, 4] Result [408] := [119982, 12] Result [409] := [119995, 1] Result [410] := [119997, 7] Result [411] := [120005, 65] Result [412] := [120071, 4] Result [413] := [120077, 8] Result [414] := [120086, 7] Result [415] := [120094, 28] Result [416] := [120123, 4] Result [417] := [120128, 5] Result [418] := [120134, 1] Result [419] := [120138, 7] Result [420] := [120146, 340] Result [421] := [120488, 25] Result [422] := [120514, 25] Result [423] := [120540, 31] Result [424] := [120572, 25] Result [425] := [120598, 31] Result [426] := [120630, 25] Result [427] := [120656, 31] Result [428] := [120688, 25] Result [429] := [120714, 31] Result [430] := [120746, 25] Result [431] := [120772, 8] Result [432] := [131072, 42711] Result [433] := [173824, 4149] Result [434] := [177984, 222] Result [435] := [194560, 542] ensure nonempty: not Result.is_empty bases_nonnegative: across Result as interval all interval.item.base >= 0 end lengths_positive: across Result as interval all interval.item.length >= 1 end intervals_sorted_disjoint_and_fewest_possible: across Result.lower |..| (Result.upper - 1) as index all Result [index.item].base + Result [index.item].length < Result [index.item + 1].base end end end