static PUNCTUATION_RANGES: [(char, char); 349] = [
('\u{0021}', '\u{002F}'),
('\u{003A}', '\u{0040}'),
('\u{005B}', '\u{0060}'),
('\u{007B}', '\u{007E}'),
('\u{00A1}', '\u{00A9}'),
('\u{00AB}', '\u{00AC}'),
('\u{00AE}', '\u{00B1}'),
('\u{00B4}', '\u{00B4}'),
('\u{00B6}', '\u{00B8}'),
('\u{00BB}', '\u{00BB}'),
('\u{00BF}', '\u{00BF}'),
('\u{00D7}', '\u{00D7}'),
('\u{00F7}', '\u{00F7}'),
('\u{02C2}', '\u{02C5}'),
('\u{02D2}', '\u{02DF}'),
('\u{02E5}', '\u{02EB}'),
('\u{02ED}', '\u{02ED}'),
('\u{02EF}', '\u{02FF}'),
('\u{0375}', '\u{0375}'),
('\u{037E}', '\u{037E}'),
('\u{0384}', '\u{0385}'),
('\u{0387}', '\u{0387}'),
('\u{03F6}', '\u{03F6}'),
('\u{0482}', '\u{0482}'),
('\u{055A}', '\u{055F}'),
('\u{0589}', '\u{058A}'),
('\u{058D}', '\u{058F}'),
('\u{05BE}', '\u{05BE}'),
('\u{05C0}', '\u{05C0}'),
('\u{05C3}', '\u{05C3}'),
('\u{05C6}', '\u{05C6}'),
('\u{05F3}', '\u{05F4}'),
('\u{0606}', '\u{060F}'),
('\u{061B}', '\u{061B}'),
('\u{061D}', '\u{061F}'),
('\u{066A}', '\u{066D}'),
('\u{06D4}', '\u{06D4}'),
('\u{06DE}', '\u{06DE}'),
('\u{06E9}', '\u{06E9}'),
('\u{06FD}', '\u{06FE}'),
('\u{0700}', '\u{070D}'),
('\u{07F6}', '\u{07F9}'),
('\u{07FE}', '\u{07FF}'),
('\u{0830}', '\u{083E}'),
('\u{085E}', '\u{085E}'),
('\u{0888}', '\u{0888}'),
('\u{0964}', '\u{0965}'),
('\u{0970}', '\u{0970}'),
('\u{09F2}', '\u{09F3}'),
('\u{09FA}', '\u{09FB}'),
('\u{09FD}', '\u{09FD}'),
('\u{0A76}', '\u{0A76}'),
('\u{0AF0}', '\u{0AF1}'),
('\u{0B70}', '\u{0B70}'),
('\u{0BF3}', '\u{0BFA}'),
('\u{0C77}', '\u{0C77}'),
('\u{0C7F}', '\u{0C7F}'),
('\u{0C84}', '\u{0C84}'),
('\u{0D4F}', '\u{0D4F}'),
('\u{0D79}', '\u{0D79}'),
('\u{0DF4}', '\u{0DF4}'),
('\u{0E3F}', '\u{0E3F}'),
('\u{0E4F}', '\u{0E4F}'),
('\u{0E5A}', '\u{0E5B}'),
('\u{0F01}', '\u{0F17}'),
('\u{0F1A}', '\u{0F1F}'),
('\u{0F34}', '\u{0F34}'),
('\u{0F36}', '\u{0F36}'),
('\u{0F38}', '\u{0F38}'),
('\u{0F3A}', '\u{0F3D}'),
('\u{0F85}', '\u{0F85}'),
('\u{0FBE}', '\u{0FC5}'),
('\u{0FC7}', '\u{0FCC}'),
('\u{0FCE}', '\u{0FDA}'),
('\u{104A}', '\u{104F}'),
('\u{109E}', '\u{109F}'),
('\u{10FB}', '\u{10FB}'),
('\u{1360}', '\u{1368}'),
('\u{1390}', '\u{1399}'),
('\u{1400}', '\u{1400}'),
('\u{166D}', '\u{166E}'),
('\u{169B}', '\u{169C}'),
('\u{16EB}', '\u{16ED}'),
('\u{1735}', '\u{1736}'),
('\u{17D4}', '\u{17D6}'),
('\u{17D8}', '\u{17DB}'),
('\u{1800}', '\u{180A}'),
('\u{1940}', '\u{1940}'),
('\u{1944}', '\u{1945}'),
('\u{19DE}', '\u{19FF}'),
('\u{1A1E}', '\u{1A1F}'),
('\u{1AA0}', '\u{1AA6}'),
('\u{1AA8}', '\u{1AAD}'),
('\u{1B4E}', '\u{1B4F}'),
('\u{1B5A}', '\u{1B6A}'),
('\u{1B74}', '\u{1B7F}'),
('\u{1BFC}', '\u{1BFF}'),
('\u{1C3B}', '\u{1C3F}'),
('\u{1C7E}', '\u{1C7F}'),
('\u{1CC0}', '\u{1CC7}'),
('\u{1CD3}', '\u{1CD3}'),
('\u{1FBD}', '\u{1FBD}'),
('\u{1FBF}', '\u{1FC1}'),
('\u{1FCD}', '\u{1FCF}'),
('\u{1FDD}', '\u{1FDF}'),
('\u{1FED}', '\u{1FEF}'),
('\u{1FFD}', '\u{1FFE}'),
('\u{2010}', '\u{2027}'),
('\u{2030}', '\u{205E}'),
('\u{207A}', '\u{207E}'),
('\u{208A}', '\u{208E}'),
('\u{20A0}', '\u{20C0}'),
('\u{2100}', '\u{2101}'),
('\u{2103}', '\u{2106}'),
('\u{2108}', '\u{2109}'),
('\u{2114}', '\u{2114}'),
('\u{2116}', '\u{2118}'),
('\u{211E}', '\u{2123}'),
('\u{2125}', '\u{2125}'),
('\u{2127}', '\u{2127}'),
('\u{2129}', '\u{2129}'),
('\u{212E}', '\u{212E}'),
('\u{213A}', '\u{213B}'),
('\u{2140}', '\u{2144}'),
('\u{214A}', '\u{214D}'),
('\u{214F}', '\u{214F}'),
('\u{218A}', '\u{218B}'),
('\u{2190}', '\u{2429}'),
('\u{2440}', '\u{244A}'),
('\u{249C}', '\u{24E9}'),
('\u{2500}', '\u{2775}'),
('\u{2794}', '\u{2B73}'),
('\u{2B76}', '\u{2B95}'),
('\u{2B97}', '\u{2BFF}'),
('\u{2CE5}', '\u{2CEA}'),
('\u{2CF9}', '\u{2CFC}'),
('\u{2CFE}', '\u{2CFF}'),
('\u{2D70}', '\u{2D70}'),
('\u{2E00}', '\u{2E2E}'),
('\u{2E30}', '\u{2E5D}'),
('\u{2E80}', '\u{2E99}'),
('\u{2E9B}', '\u{2EF3}'),
('\u{2F00}', '\u{2FD5}'),
('\u{2FF0}', '\u{2FFF}'),
('\u{3001}', '\u{3004}'),
('\u{3008}', '\u{3020}'),
('\u{3030}', '\u{3030}'),
('\u{3036}', '\u{3037}'),
('\u{303D}', '\u{303F}'),
('\u{309B}', '\u{309C}'),
('\u{30A0}', '\u{30A0}'),
('\u{30FB}', '\u{30FB}'),
('\u{3190}', '\u{3191}'),
('\u{3196}', '\u{319F}'),
('\u{31C0}', '\u{31E5}'),
('\u{31EF}', '\u{31EF}'),
('\u{3200}', '\u{321E}'),
('\u{322A}', '\u{3247}'),
('\u{3250}', '\u{3250}'),
('\u{3260}', '\u{327F}'),
('\u{328A}', '\u{32B0}'),
('\u{32C0}', '\u{33FF}'),
('\u{4DC0}', '\u{4DFF}'),
('\u{A490}', '\u{A4C6}'),
('\u{A4FE}', '\u{A4FF}'),
('\u{A60D}', '\u{A60F}'),
('\u{A673}', '\u{A673}'),
('\u{A67E}', '\u{A67E}'),
('\u{A6F2}', '\u{A6F7}'),
('\u{A700}', '\u{A716}'),
('\u{A720}', '\u{A721}'),
('\u{A789}', '\u{A78A}'),
('\u{A828}', '\u{A82B}'),
('\u{A836}', '\u{A839}'),
('\u{A874}', '\u{A877}'),
('\u{A8CE}', '\u{A8CF}'),
('\u{A8F8}', '\u{A8FA}'),
('\u{A8FC}', '\u{A8FC}'),
('\u{A92E}', '\u{A92F}'),
('\u{A95F}', '\u{A95F}'),
('\u{A9C1}', '\u{A9CD}'),
('\u{A9DE}', '\u{A9DF}'),
('\u{AA5C}', '\u{AA5F}'),
('\u{AA77}', '\u{AA79}'),
('\u{AADE}', '\u{AADF}'),
('\u{AAF0}', '\u{AAF1}'),
('\u{AB5B}', '\u{AB5B}'),
('\u{AB6A}', '\u{AB6B}'),
('\u{ABEB}', '\u{ABEB}'),
('\u{FB29}', '\u{FB29}'),
('\u{FBB2}', '\u{FBC2}'),
('\u{FD3E}', '\u{FD4F}'),
('\u{FDCF}', '\u{FDCF}'),
('\u{FDFC}', '\u{FDFF}'),
('\u{FE10}', '\u{FE19}'),
('\u{FE30}', '\u{FE52}'),
('\u{FE54}', '\u{FE66}'),
('\u{FE68}', '\u{FE6B}'),
('\u{FF01}', '\u{FF0F}'),
('\u{FF1A}', '\u{FF20}'),
('\u{FF3B}', '\u{FF40}'),
('\u{FF5B}', '\u{FF65}'),
('\u{FFE0}', '\u{FFE6}'),
('\u{FFE8}', '\u{FFEE}'),
('\u{FFFC}', '\u{FFFD}'),
('\u{10100}', '\u{10102}'),
('\u{10137}', '\u{1013F}'),
('\u{10179}', '\u{10189}'),
('\u{1018C}', '\u{1018E}'),
('\u{10190}', '\u{1019C}'),
('\u{101A0}', '\u{101A0}'),
('\u{101D0}', '\u{101FC}'),
('\u{1039F}', '\u{1039F}'),
('\u{103D0}', '\u{103D0}'),
('\u{1056F}', '\u{1056F}'),
('\u{10857}', '\u{10857}'),
('\u{10877}', '\u{10878}'),
('\u{1091F}', '\u{1091F}'),
('\u{1093F}', '\u{1093F}'),
('\u{10A50}', '\u{10A58}'),
('\u{10A7F}', '\u{10A7F}'),
('\u{10AC8}', '\u{10AC8}'),
('\u{10AF0}', '\u{10AF6}'),
('\u{10B39}', '\u{10B3F}'),
('\u{10B99}', '\u{10B9C}'),
('\u{10D6E}', '\u{10D6E}'),
('\u{10D8E}', '\u{10D8F}'),
('\u{10EAD}', '\u{10EAD}'),
('\u{10F55}', '\u{10F59}'),
('\u{10F86}', '\u{10F89}'),
('\u{11047}', '\u{1104D}'),
('\u{110BB}', '\u{110BC}'),
('\u{110BE}', '\u{110C1}'),
('\u{11140}', '\u{11143}'),
('\u{11174}', '\u{11175}'),
('\u{111C5}', '\u{111C8}'),
('\u{111CD}', '\u{111CD}'),
('\u{111DB}', '\u{111DB}'),
('\u{111DD}', '\u{111DF}'),
('\u{11238}', '\u{1123D}'),
('\u{112A9}', '\u{112A9}'),
('\u{113D4}', '\u{113D5}'),
('\u{113D7}', '\u{113D8}'),
('\u{1144B}', '\u{1144F}'),
('\u{1145A}', '\u{1145B}'),
('\u{1145D}', '\u{1145D}'),
('\u{114C6}', '\u{114C6}'),
('\u{115C1}', '\u{115D7}'),
('\u{11641}', '\u{11643}'),
('\u{11660}', '\u{1166C}'),
('\u{116B9}', '\u{116B9}'),
('\u{1173C}', '\u{1173F}'),
('\u{1183B}', '\u{1183B}'),
('\u{11944}', '\u{11946}'),
('\u{119E2}', '\u{119E2}'),
('\u{11A3F}', '\u{11A46}'),
('\u{11A9A}', '\u{11A9C}'),
('\u{11A9E}', '\u{11AA2}'),
('\u{11B00}', '\u{11B09}'),
('\u{11BE1}', '\u{11BE1}'),
('\u{11C41}', '\u{11C45}'),
('\u{11C70}', '\u{11C71}'),
('\u{11EF7}', '\u{11EF8}'),
('\u{11F43}', '\u{11F4F}'),
('\u{11FD5}', '\u{11FF1}'),
('\u{11FFF}', '\u{11FFF}'),
('\u{12470}', '\u{12474}'),
('\u{12FF1}', '\u{12FF2}'),
('\u{16A6E}', '\u{16A6F}'),
('\u{16AF5}', '\u{16AF5}'),
('\u{16B37}', '\u{16B3F}'),
('\u{16B44}', '\u{16B45}'),
('\u{16D6D}', '\u{16D6F}'),
('\u{16E97}', '\u{16E9A}'),
('\u{16FE2}', '\u{16FE2}'),
('\u{1BC9C}', '\u{1BC9C}'),
('\u{1BC9F}', '\u{1BC9F}'),
('\u{1CC00}', '\u{1CCEF}'),
('\u{1CD00}', '\u{1CEB3}'),
('\u{1CF50}', '\u{1CFC3}'),
('\u{1D000}', '\u{1D0F5}'),
('\u{1D100}', '\u{1D126}'),
('\u{1D129}', '\u{1D164}'),
('\u{1D16A}', '\u{1D16C}'),
('\u{1D183}', '\u{1D184}'),
('\u{1D18C}', '\u{1D1A9}'),
('\u{1D1AE}', '\u{1D1EA}'),
('\u{1D200}', '\u{1D241}'),
('\u{1D245}', '\u{1D245}'),
('\u{1D300}', '\u{1D356}'),
('\u{1D6C1}', '\u{1D6C1}'),
('\u{1D6DB}', '\u{1D6DB}'),
('\u{1D6FB}', '\u{1D6FB}'),
('\u{1D715}', '\u{1D715}'),
('\u{1D735}', '\u{1D735}'),
('\u{1D74F}', '\u{1D74F}'),
('\u{1D76F}', '\u{1D76F}'),
('\u{1D789}', '\u{1D789}'),
('\u{1D7A9}', '\u{1D7A9}'),
('\u{1D7C3}', '\u{1D7C3}'),
('\u{1D800}', '\u{1D9FF}'),
('\u{1DA37}', '\u{1DA3A}'),
('\u{1DA6D}', '\u{1DA74}'),
('\u{1DA76}', '\u{1DA83}'),
('\u{1DA85}', '\u{1DA8B}'),
('\u{1E14F}', '\u{1E14F}'),
('\u{1E2FF}', '\u{1E2FF}'),
('\u{1E5FF}', '\u{1E5FF}'),
('\u{1E95E}', '\u{1E95F}'),
('\u{1ECAC}', '\u{1ECAC}'),
('\u{1ECB0}', '\u{1ECB0}'),
('\u{1ED2E}', '\u{1ED2E}'),
('\u{1EEF0}', '\u{1EEF1}'),
('\u{1F000}', '\u{1F02B}'),
('\u{1F030}', '\u{1F093}'),
('\u{1F0A0}', '\u{1F0AE}'),
('\u{1F0B1}', '\u{1F0BF}'),
('\u{1F0C1}', '\u{1F0CF}'),
('\u{1F0D1}', '\u{1F0F5}'),
('\u{1F10D}', '\u{1F1AD}'),
('\u{1F1E6}', '\u{1F202}'),
('\u{1F210}', '\u{1F23B}'),
('\u{1F240}', '\u{1F248}'),
('\u{1F250}', '\u{1F251}'),
('\u{1F260}', '\u{1F265}'),
('\u{1F300}', '\u{1F6D7}'),
('\u{1F6DC}', '\u{1F6EC}'),
('\u{1F6F0}', '\u{1F6FC}'),
('\u{1F700}', '\u{1F776}'),
('\u{1F77B}', '\u{1F7D9}'),
('\u{1F7E0}', '\u{1F7EB}'),
('\u{1F7F0}', '\u{1F7F0}'),
('\u{1F800}', '\u{1F80B}'),
('\u{1F810}', '\u{1F847}'),
('\u{1F850}', '\u{1F859}'),
('\u{1F860}', '\u{1F887}'),
('\u{1F890}', '\u{1F8AD}'),
('\u{1F8B0}', '\u{1F8BB}'),
('\u{1F8C0}', '\u{1F8C1}'),
('\u{1F900}', '\u{1FA53}'),
('\u{1FA60}', '\u{1FA6D}'),
('\u{1FA70}', '\u{1FA7C}'),
('\u{1FA80}', '\u{1FA89}'),
('\u{1FA8F}', '\u{1FAC6}'),
('\u{1FACE}', '\u{1FADC}'),
('\u{1FADF}', '\u{1FAE9}'),
('\u{1FAF0}', '\u{1FAF8}'),
('\u{1FB00}', '\u{1FB92}'),
('\u{1FB94}', '\u{1FBEF}'),
];
pub(crate) fn is_unicode_punctuation(value: char) -> bool {
PUNCTUATION_RANGES
.binary_search_by(|&(start, end)| {
if value < start {
core::cmp::Ordering::Greater
} else if value > end {
core::cmp::Ordering::Less
} else {
core::cmp::Ordering::Equal
}
})
.is_ok()
}