Merge pull request #36 from djudd/compatibility-quick-checks

Add quick check implementations for NFKC & NFKD
This commit is contained in:
Sujay Jayakar
2019-01-14 22:40:37 +05:30
committed by GitHub
5 changed files with 1049 additions and 0 deletions
+18
View File
@@ -352,12 +352,24 @@ def gen_nfc_qc(prop_tables, out):
gen_qc_match(prop_tables['NFC_QC'], out)
out.write("}\n")
def gen_nfkc_qc(prop_tables, out):
out.write("#[inline]\n")
out.write("pub fn qc_nfkc(c: char) -> IsNormalized {\n")
gen_qc_match(prop_tables['NFKC_QC'], out)
out.write("}\n")
def gen_nfd_qc(prop_tables, out):
out.write("#[inline]\n")
out.write("pub fn qc_nfd(c: char) -> IsNormalized {\n")
gen_qc_match(prop_tables['NFD_QC'], out)
out.write("}\n")
def gen_nfkd_qc(prop_tables, out):
out.write("#[inline]\n")
out.write("pub fn qc_nfkd(c: char) -> IsNormalized {\n")
gen_qc_match(prop_tables['NFKD_QC'], out)
out.write("}\n")
def gen_combining_mark(general_category_mark, out):
out.write("#[inline]\n")
out.write("pub fn is_combining_mark(c: char) -> bool {\n")
@@ -446,9 +458,15 @@ if __name__ == '__main__':
gen_nfc_qc(data.norm_props, out)
out.write("\n")
gen_nfkc_qc(data.norm_props, out)
out.write("\n")
gen_nfd_qc(data.norm_props, out)
out.write("\n")
gen_nfkd_qc(data.norm_props, out)
out.write("\n")
gen_stream_safe(data.ss_leading, data.ss_trailing, out)
out.write("\n")
+4
View File
@@ -47,10 +47,14 @@ pub use quick_check::{
IsNormalized,
is_nfc,
is_nfc_quick,
is_nfkc,
is_nfkc_quick,
is_nfc_stream_safe,
is_nfc_stream_safe_quick,
is_nfd,
is_nfd_quick,
is_nfkd,
is_nfkd_quick,
is_nfd_stream_safe,
is_nfd_stream_safe_quick,
};
+33
View File
@@ -70,12 +70,25 @@ pub fn is_nfc_quick<I: Iterator<Item=char>>(s: I) -> IsNormalized {
quick_check(s, tables::qc_nfc, false)
}
/// Quickly check if a string is in NFKC.
#[inline]
pub fn is_nfkc_quick<I: Iterator<Item=char>>(s: I) -> IsNormalized {
quick_check(s, tables::qc_nfkc, false)
}
/// Quickly check if a string is in NFD.
#[inline]
pub fn is_nfd_quick<I: Iterator<Item=char>>(s: I) -> IsNormalized {
quick_check(s, tables::qc_nfd, false)
}
/// Quickly check if a string is in NFKD.
#[inline]
pub fn is_nfkd_quick<I: Iterator<Item=char>>(s: I) -> IsNormalized {
quick_check(s, tables::qc_nfkd, false)
}
/// Quickly check if a string is Stream-Safe NFC.
#[inline]
pub fn is_nfc_stream_safe_quick<I: Iterator<Item=char>>(s: I) -> IsNormalized {
@@ -98,6 +111,16 @@ pub fn is_nfc(s: &str) -> bool {
}
}
/// Authoritatively check if a string is in NFKC.
#[inline]
pub fn is_nfkc(s: &str) -> bool {
match is_nfkc_quick(s.chars()) {
IsNormalized::Yes => true,
IsNormalized::No => false,
IsNormalized::Maybe => s.chars().eq(s.chars().nfkc()),
}
}
/// Authoritatively check if a string is in NFD.
#[inline]
pub fn is_nfd(s: &str) -> bool {
@@ -108,6 +131,16 @@ pub fn is_nfd(s: &str) -> bool {
}
}
/// Authoritatively check if a string is in NFKD.
#[inline]
pub fn is_nfkd(s: &str) -> bool {
match is_nfkd_quick(s.chars()) {
IsNormalized::Yes => true,
IsNormalized::No => false,
IsNormalized::Maybe => s.chars().eq(s.chars().nfkd()),
}
}
/// Authoritatively check if a string is Stream-Safe NFC.
#[inline]
pub fn is_nfc_stream_safe(s: &str) -> bool {
+984
View File
@@ -9764,6 +9764,442 @@ pub fn qc_nfc(c: char) -> IsNormalized {
}
}
#[inline]
pub fn qc_nfkc(c: char) -> IsNormalized {
match c {
'\u{00A0}' => No,
'\u{00A8}' => No,
'\u{00AA}' => No,
'\u{00AF}' => No,
'\u{00B2}'...'\u{00B3}' => No,
'\u{00B4}' => No,
'\u{00B5}' => No,
'\u{00B8}' => No,
'\u{00B9}' => No,
'\u{00BA}' => No,
'\u{00BC}'...'\u{00BE}' => No,
'\u{0132}'...'\u{0133}' => No,
'\u{013F}'...'\u{0140}' => No,
'\u{0149}' => No,
'\u{017F}' => No,
'\u{01C4}'...'\u{01CC}' => No,
'\u{01F1}'...'\u{01F3}' => No,
'\u{02B0}'...'\u{02B8}' => No,
'\u{02D8}'...'\u{02DD}' => No,
'\u{02E0}'...'\u{02E4}' => No,
'\u{0340}'...'\u{0341}' => No,
'\u{0343}'...'\u{0344}' => No,
'\u{0374}' => No,
'\u{037A}' => No,
'\u{037E}' => No,
'\u{0384}'...'\u{0385}' => No,
'\u{0387}' => No,
'\u{03D0}'...'\u{03D6}' => No,
'\u{03F0}'...'\u{03F2}' => No,
'\u{03F4}'...'\u{03F5}' => No,
'\u{03F9}' => No,
'\u{0587}' => No,
'\u{0675}'...'\u{0678}' => No,
'\u{0958}'...'\u{095F}' => No,
'\u{09DC}'...'\u{09DD}' => No,
'\u{09DF}' => No,
'\u{0A33}' => No,
'\u{0A36}' => No,
'\u{0A59}'...'\u{0A5B}' => No,
'\u{0A5E}' => No,
'\u{0B5C}'...'\u{0B5D}' => No,
'\u{0E33}' => No,
'\u{0EB3}' => No,
'\u{0EDC}'...'\u{0EDD}' => No,
'\u{0F0C}' => No,
'\u{0F43}' => No,
'\u{0F4D}' => No,
'\u{0F52}' => No,
'\u{0F57}' => No,
'\u{0F5C}' => No,
'\u{0F69}' => No,
'\u{0F73}' => No,
'\u{0F75}'...'\u{0F79}' => No,
'\u{0F81}' => No,
'\u{0F93}' => No,
'\u{0F9D}' => No,
'\u{0FA2}' => No,
'\u{0FA7}' => No,
'\u{0FAC}' => No,
'\u{0FB9}' => No,
'\u{10FC}' => No,
'\u{1D2C}'...'\u{1D2E}' => No,
'\u{1D30}'...'\u{1D3A}' => No,
'\u{1D3C}'...'\u{1D4D}' => No,
'\u{1D4F}'...'\u{1D6A}' => No,
'\u{1D78}' => No,
'\u{1D9B}'...'\u{1DBF}' => No,
'\u{1E9A}'...'\u{1E9B}' => No,
'\u{1F71}' => No,
'\u{1F73}' => No,
'\u{1F75}' => No,
'\u{1F77}' => No,
'\u{1F79}' => No,
'\u{1F7B}' => No,
'\u{1F7D}' => No,
'\u{1FBB}' => No,
'\u{1FBD}' => No,
'\u{1FBE}' => No,
'\u{1FBF}'...'\u{1FC1}' => No,
'\u{1FC9}' => No,
'\u{1FCB}' => No,
'\u{1FCD}'...'\u{1FCF}' => No,
'\u{1FD3}' => No,
'\u{1FDB}' => No,
'\u{1FDD}'...'\u{1FDF}' => No,
'\u{1FE3}' => No,
'\u{1FEB}' => No,
'\u{1FED}'...'\u{1FEF}' => No,
'\u{1FF9}' => No,
'\u{1FFB}' => No,
'\u{1FFD}'...'\u{1FFE}' => No,
'\u{2000}'...'\u{200A}' => No,
'\u{2011}' => No,
'\u{2017}' => No,
'\u{2024}'...'\u{2026}' => No,
'\u{202F}' => No,
'\u{2033}'...'\u{2034}' => No,
'\u{2036}'...'\u{2037}' => No,
'\u{203C}' => No,
'\u{203E}' => No,
'\u{2047}'...'\u{2049}' => No,
'\u{2057}' => No,
'\u{205F}' => No,
'\u{2070}' => No,
'\u{2071}' => No,
'\u{2074}'...'\u{2079}' => No,
'\u{207A}'...'\u{207C}' => No,
'\u{207D}' => No,
'\u{207E}' => No,
'\u{207F}' => No,
'\u{2080}'...'\u{2089}' => No,
'\u{208A}'...'\u{208C}' => No,
'\u{208D}' => No,
'\u{208E}' => No,
'\u{2090}'...'\u{209C}' => No,
'\u{20A8}' => No,
'\u{2100}'...'\u{2101}' => No,
'\u{2102}' => No,
'\u{2103}' => No,
'\u{2105}'...'\u{2106}' => No,
'\u{2107}' => No,
'\u{2109}' => No,
'\u{210A}'...'\u{2113}' => No,
'\u{2115}' => No,
'\u{2116}' => No,
'\u{2119}'...'\u{211D}' => No,
'\u{2120}'...'\u{2122}' => No,
'\u{2124}' => No,
'\u{2126}' => No,
'\u{2128}' => No,
'\u{212A}'...'\u{212D}' => No,
'\u{212F}'...'\u{2131}' => No,
'\u{2133}'...'\u{2134}' => No,
'\u{2135}'...'\u{2138}' => No,
'\u{2139}' => No,
'\u{213B}' => No,
'\u{213C}'...'\u{213F}' => No,
'\u{2140}' => No,
'\u{2145}'...'\u{2149}' => No,
'\u{2150}'...'\u{215F}' => No,
'\u{2160}'...'\u{217F}' => No,
'\u{2189}' => No,
'\u{222C}'...'\u{222D}' => No,
'\u{222F}'...'\u{2230}' => No,
'\u{2329}' => No,
'\u{232A}' => No,
'\u{2460}'...'\u{249B}' => No,
'\u{249C}'...'\u{24E9}' => No,
'\u{24EA}' => No,
'\u{2A0C}' => No,
'\u{2A74}'...'\u{2A76}' => No,
'\u{2ADC}' => No,
'\u{2C7C}'...'\u{2C7D}' => No,
'\u{2D6F}' => No,
'\u{2E9F}' => No,
'\u{2EF3}' => No,
'\u{2F00}'...'\u{2FD5}' => No,
'\u{3000}' => No,
'\u{3036}' => No,
'\u{3038}'...'\u{303A}' => No,
'\u{309B}'...'\u{309C}' => No,
'\u{309F}' => No,
'\u{30FF}' => No,
'\u{3131}'...'\u{318E}' => No,
'\u{3192}'...'\u{3195}' => No,
'\u{3196}'...'\u{319F}' => No,
'\u{3200}'...'\u{321E}' => No,
'\u{3220}'...'\u{3229}' => No,
'\u{322A}'...'\u{3247}' => No,
'\u{3250}' => No,
'\u{3251}'...'\u{325F}' => No,
'\u{3260}'...'\u{327E}' => No,
'\u{3280}'...'\u{3289}' => No,
'\u{328A}'...'\u{32B0}' => No,
'\u{32B1}'...'\u{32BF}' => No,
'\u{32C0}'...'\u{32FE}' => No,
'\u{3300}'...'\u{33FF}' => No,
'\u{A69C}'...'\u{A69D}' => No,
'\u{A770}' => No,
'\u{A7F8}'...'\u{A7F9}' => No,
'\u{AB5C}'...'\u{AB5F}' => No,
'\u{F900}'...'\u{FA0D}' => No,
'\u{FA10}' => No,
'\u{FA12}' => No,
'\u{FA15}'...'\u{FA1E}' => No,
'\u{FA20}' => No,
'\u{FA22}' => No,
'\u{FA25}'...'\u{FA26}' => No,
'\u{FA2A}'...'\u{FA6D}' => No,
'\u{FA70}'...'\u{FAD9}' => No,
'\u{FB00}'...'\u{FB06}' => No,
'\u{FB13}'...'\u{FB17}' => No,
'\u{FB1D}' => No,
'\u{FB1F}'...'\u{FB28}' => No,
'\u{FB29}' => No,
'\u{FB2A}'...'\u{FB36}' => No,
'\u{FB38}'...'\u{FB3C}' => No,
'\u{FB3E}' => No,
'\u{FB40}'...'\u{FB41}' => No,
'\u{FB43}'...'\u{FB44}' => No,
'\u{FB46}'...'\u{FBB1}' => No,
'\u{FBD3}'...'\u{FD3D}' => No,
'\u{FD50}'...'\u{FD8F}' => No,
'\u{FD92}'...'\u{FDC7}' => No,
'\u{FDF0}'...'\u{FDFB}' => No,
'\u{FDFC}' => No,
'\u{FE10}'...'\u{FE16}' => No,
'\u{FE17}' => No,
'\u{FE18}' => No,
'\u{FE19}' => No,
'\u{FE30}' => No,
'\u{FE31}'...'\u{FE32}' => No,
'\u{FE33}'...'\u{FE34}' => No,
'\u{FE35}' => No,
'\u{FE36}' => No,
'\u{FE37}' => No,
'\u{FE38}' => No,
'\u{FE39}' => No,
'\u{FE3A}' => No,
'\u{FE3B}' => No,
'\u{FE3C}' => No,
'\u{FE3D}' => No,
'\u{FE3E}' => No,
'\u{FE3F}' => No,
'\u{FE40}' => No,
'\u{FE41}' => No,
'\u{FE42}' => No,
'\u{FE43}' => No,
'\u{FE44}' => No,
'\u{FE47}' => No,
'\u{FE48}' => No,
'\u{FE49}'...'\u{FE4C}' => No,
'\u{FE4D}'...'\u{FE4F}' => No,
'\u{FE50}'...'\u{FE52}' => No,
'\u{FE54}'...'\u{FE57}' => No,
'\u{FE58}' => No,
'\u{FE59}' => No,
'\u{FE5A}' => No,
'\u{FE5B}' => No,
'\u{FE5C}' => No,
'\u{FE5D}' => No,
'\u{FE5E}' => No,
'\u{FE5F}'...'\u{FE61}' => No,
'\u{FE62}' => No,
'\u{FE63}' => No,
'\u{FE64}'...'\u{FE66}' => No,
'\u{FE68}' => No,
'\u{FE69}' => No,
'\u{FE6A}'...'\u{FE6B}' => No,
'\u{FE70}'...'\u{FE72}' => No,
'\u{FE74}' => No,
'\u{FE76}'...'\u{FEFC}' => No,
'\u{FF01}'...'\u{FF03}' => No,
'\u{FF04}' => No,
'\u{FF05}'...'\u{FF07}' => No,
'\u{FF08}' => No,
'\u{FF09}' => No,
'\u{FF0A}' => No,
'\u{FF0B}' => No,
'\u{FF0C}' => No,
'\u{FF0D}' => No,
'\u{FF0E}'...'\u{FF0F}' => No,
'\u{FF10}'...'\u{FF19}' => No,
'\u{FF1A}'...'\u{FF1B}' => No,
'\u{FF1C}'...'\u{FF1E}' => No,
'\u{FF1F}'...'\u{FF20}' => No,
'\u{FF21}'...'\u{FF3A}' => No,
'\u{FF3B}' => No,
'\u{FF3C}' => No,
'\u{FF3D}' => No,
'\u{FF3E}' => No,
'\u{FF3F}' => No,
'\u{FF40}' => No,
'\u{FF41}'...'\u{FF5A}' => No,
'\u{FF5B}' => No,
'\u{FF5C}' => No,
'\u{FF5D}' => No,
'\u{FF5E}' => No,
'\u{FF5F}' => No,
'\u{FF60}' => No,
'\u{FF61}' => No,
'\u{FF62}' => No,
'\u{FF63}' => No,
'\u{FF64}'...'\u{FF65}' => No,
'\u{FF66}'...'\u{FF6F}' => No,
'\u{FF70}' => No,
'\u{FF71}'...'\u{FF9D}' => No,
'\u{FF9E}'...'\u{FF9F}' => No,
'\u{FFA0}'...'\u{FFBE}' => No,
'\u{FFC2}'...'\u{FFC7}' => No,
'\u{FFCA}'...'\u{FFCF}' => No,
'\u{FFD2}'...'\u{FFD7}' => No,
'\u{FFDA}'...'\u{FFDC}' => No,
'\u{FFE0}'...'\u{FFE1}' => No,
'\u{FFE2}' => No,
'\u{FFE3}' => No,
'\u{FFE4}' => No,
'\u{FFE5}'...'\u{FFE6}' => No,
'\u{FFE8}' => No,
'\u{FFE9}'...'\u{FFEC}' => No,
'\u{FFED}'...'\u{FFEE}' => No,
'\u{1D15E}'...'\u{1D164}' => No,
'\u{1D1BB}'...'\u{1D1C0}' => No,
'\u{1D400}'...'\u{1D454}' => No,
'\u{1D456}'...'\u{1D49C}' => No,
'\u{1D49E}'...'\u{1D49F}' => No,
'\u{1D4A2}' => No,
'\u{1D4A5}'...'\u{1D4A6}' => No,
'\u{1D4A9}'...'\u{1D4AC}' => No,
'\u{1D4AE}'...'\u{1D4B9}' => No,
'\u{1D4BB}' => No,
'\u{1D4BD}'...'\u{1D4C3}' => No,
'\u{1D4C5}'...'\u{1D505}' => No,
'\u{1D507}'...'\u{1D50A}' => No,
'\u{1D50D}'...'\u{1D514}' => No,
'\u{1D516}'...'\u{1D51C}' => No,
'\u{1D51E}'...'\u{1D539}' => No,
'\u{1D53B}'...'\u{1D53E}' => No,
'\u{1D540}'...'\u{1D544}' => No,
'\u{1D546}' => No,
'\u{1D54A}'...'\u{1D550}' => No,
'\u{1D552}'...'\u{1D6A5}' => No,
'\u{1D6A8}'...'\u{1D6C0}' => No,
'\u{1D6C1}' => No,
'\u{1D6C2}'...'\u{1D6DA}' => No,
'\u{1D6DB}' => No,
'\u{1D6DC}'...'\u{1D6FA}' => No,
'\u{1D6FB}' => No,
'\u{1D6FC}'...'\u{1D714}' => No,
'\u{1D715}' => No,
'\u{1D716}'...'\u{1D734}' => No,
'\u{1D735}' => No,
'\u{1D736}'...'\u{1D74E}' => No,
'\u{1D74F}' => No,
'\u{1D750}'...'\u{1D76E}' => No,
'\u{1D76F}' => No,
'\u{1D770}'...'\u{1D788}' => No,
'\u{1D789}' => No,
'\u{1D78A}'...'\u{1D7A8}' => No,
'\u{1D7A9}' => No,
'\u{1D7AA}'...'\u{1D7C2}' => No,
'\u{1D7C3}' => No,
'\u{1D7C4}'...'\u{1D7CB}' => No,
'\u{1D7CE}'...'\u{1D7FF}' => No,
'\u{1EE00}'...'\u{1EE03}' => No,
'\u{1EE05}'...'\u{1EE1F}' => No,
'\u{1EE21}'...'\u{1EE22}' => No,
'\u{1EE24}' => No,
'\u{1EE27}' => No,
'\u{1EE29}'...'\u{1EE32}' => No,
'\u{1EE34}'...'\u{1EE37}' => No,
'\u{1EE39}' => No,
'\u{1EE3B}' => No,
'\u{1EE42}' => No,
'\u{1EE47}' => No,
'\u{1EE49}' => No,
'\u{1EE4B}' => No,
'\u{1EE4D}'...'\u{1EE4F}' => No,
'\u{1EE51}'...'\u{1EE52}' => No,
'\u{1EE54}' => No,
'\u{1EE57}' => No,
'\u{1EE59}' => No,
'\u{1EE5B}' => No,
'\u{1EE5D}' => No,
'\u{1EE5F}' => No,
'\u{1EE61}'...'\u{1EE62}' => No,
'\u{1EE64}' => No,
'\u{1EE67}'...'\u{1EE6A}' => No,
'\u{1EE6C}'...'\u{1EE72}' => No,
'\u{1EE74}'...'\u{1EE77}' => No,
'\u{1EE79}'...'\u{1EE7C}' => No,
'\u{1EE7E}' => No,
'\u{1EE80}'...'\u{1EE89}' => No,
'\u{1EE8B}'...'\u{1EE9B}' => No,
'\u{1EEA1}'...'\u{1EEA3}' => No,
'\u{1EEA5}'...'\u{1EEA9}' => No,
'\u{1EEAB}'...'\u{1EEBB}' => No,
'\u{1F100}'...'\u{1F10A}' => No,
'\u{1F110}'...'\u{1F12E}' => No,
'\u{1F130}'...'\u{1F14F}' => No,
'\u{1F16A}'...'\u{1F16B}' => No,
'\u{1F190}' => No,
'\u{1F200}'...'\u{1F202}' => No,
'\u{1F210}'...'\u{1F23B}' => No,
'\u{1F240}'...'\u{1F248}' => No,
'\u{1F250}'...'\u{1F251}' => No,
'\u{2F800}'...'\u{2FA1D}' => No,
'\u{0300}'...'\u{0304}' => Maybe,
'\u{0306}'...'\u{030C}' => Maybe,
'\u{030F}' => Maybe,
'\u{0311}' => Maybe,
'\u{0313}'...'\u{0314}' => Maybe,
'\u{031B}' => Maybe,
'\u{0323}'...'\u{0328}' => Maybe,
'\u{032D}'...'\u{032E}' => Maybe,
'\u{0330}'...'\u{0331}' => Maybe,
'\u{0338}' => Maybe,
'\u{0342}' => Maybe,
'\u{0345}' => Maybe,
'\u{0653}'...'\u{0655}' => Maybe,
'\u{093C}' => Maybe,
'\u{09BE}' => Maybe,
'\u{09D7}' => Maybe,
'\u{0B3E}' => Maybe,
'\u{0B56}' => Maybe,
'\u{0B57}' => Maybe,
'\u{0BBE}' => Maybe,
'\u{0BD7}' => Maybe,
'\u{0C56}' => Maybe,
'\u{0CC2}' => Maybe,
'\u{0CD5}'...'\u{0CD6}' => Maybe,
'\u{0D3E}' => Maybe,
'\u{0D57}' => Maybe,
'\u{0DCA}' => Maybe,
'\u{0DCF}' => Maybe,
'\u{0DDF}' => Maybe,
'\u{102E}' => Maybe,
'\u{1161}'...'\u{1175}' => Maybe,
'\u{11A8}'...'\u{11C2}' => Maybe,
'\u{1B35}' => Maybe,
'\u{3099}'...'\u{309A}' => Maybe,
'\u{110BA}' => Maybe,
'\u{11127}' => Maybe,
'\u{1133E}' => Maybe,
'\u{11357}' => Maybe,
'\u{114B0}' => Maybe,
'\u{114BA}' => Maybe,
'\u{114BD}' => Maybe,
'\u{115AF}' => Maybe,
_ => Yes,
}
}
#[inline]
pub fn qc_nfd(c: char) -> IsNormalized {
match c {
@@ -10013,6 +10449,554 @@ pub fn qc_nfd(c: char) -> IsNormalized {
}
}
#[inline]
pub fn qc_nfkd(c: char) -> IsNormalized {
match c {
'\u{00A0}' => No,
'\u{00A8}' => No,
'\u{00AA}' => No,
'\u{00AF}' => No,
'\u{00B2}'...'\u{00B3}' => No,
'\u{00B4}' => No,
'\u{00B5}' => No,
'\u{00B8}' => No,
'\u{00B9}' => No,
'\u{00BA}' => No,
'\u{00BC}'...'\u{00BE}' => No,
'\u{00C0}'...'\u{00C5}' => No,
'\u{00C7}'...'\u{00CF}' => No,
'\u{00D1}'...'\u{00D6}' => No,
'\u{00D9}'...'\u{00DD}' => No,
'\u{00E0}'...'\u{00E5}' => No,
'\u{00E7}'...'\u{00EF}' => No,
'\u{00F1}'...'\u{00F6}' => No,
'\u{00F9}'...'\u{00FD}' => No,
'\u{00FF}'...'\u{010F}' => No,
'\u{0112}'...'\u{0125}' => No,
'\u{0128}'...'\u{0130}' => No,
'\u{0132}'...'\u{0137}' => No,
'\u{0139}'...'\u{0140}' => No,
'\u{0143}'...'\u{0149}' => No,
'\u{014C}'...'\u{0151}' => No,
'\u{0154}'...'\u{0165}' => No,
'\u{0168}'...'\u{017F}' => No,
'\u{01A0}'...'\u{01A1}' => No,
'\u{01AF}'...'\u{01B0}' => No,
'\u{01C4}'...'\u{01DC}' => No,
'\u{01DE}'...'\u{01E3}' => No,
'\u{01E6}'...'\u{01F5}' => No,
'\u{01F8}'...'\u{021B}' => No,
'\u{021E}'...'\u{021F}' => No,
'\u{0226}'...'\u{0233}' => No,
'\u{02B0}'...'\u{02B8}' => No,
'\u{02D8}'...'\u{02DD}' => No,
'\u{02E0}'...'\u{02E4}' => No,
'\u{0340}'...'\u{0341}' => No,
'\u{0343}'...'\u{0344}' => No,
'\u{0374}' => No,
'\u{037A}' => No,
'\u{037E}' => No,
'\u{0384}'...'\u{0385}' => No,
'\u{0386}' => No,
'\u{0387}' => No,
'\u{0388}'...'\u{038A}' => No,
'\u{038C}' => No,
'\u{038E}'...'\u{0390}' => No,
'\u{03AA}'...'\u{03B0}' => No,
'\u{03CA}'...'\u{03CE}' => No,
'\u{03D0}'...'\u{03D6}' => No,
'\u{03F0}'...'\u{03F2}' => No,
'\u{03F4}'...'\u{03F5}' => No,
'\u{03F9}' => No,
'\u{0400}'...'\u{0401}' => No,
'\u{0403}' => No,
'\u{0407}' => No,
'\u{040C}'...'\u{040E}' => No,
'\u{0419}' => No,
'\u{0439}' => No,
'\u{0450}'...'\u{0451}' => No,
'\u{0453}' => No,
'\u{0457}' => No,
'\u{045C}'...'\u{045E}' => No,
'\u{0476}'...'\u{0477}' => No,
'\u{04C1}'...'\u{04C2}' => No,
'\u{04D0}'...'\u{04D3}' => No,
'\u{04D6}'...'\u{04D7}' => No,
'\u{04DA}'...'\u{04DF}' => No,
'\u{04E2}'...'\u{04E7}' => No,
'\u{04EA}'...'\u{04F5}' => No,
'\u{04F8}'...'\u{04F9}' => No,
'\u{0587}' => No,
'\u{0622}'...'\u{0626}' => No,
'\u{0675}'...'\u{0678}' => No,
'\u{06C0}' => No,
'\u{06C2}' => No,
'\u{06D3}' => No,
'\u{0929}' => No,
'\u{0931}' => No,
'\u{0934}' => No,
'\u{0958}'...'\u{095F}' => No,
'\u{09CB}'...'\u{09CC}' => No,
'\u{09DC}'...'\u{09DD}' => No,
'\u{09DF}' => No,
'\u{0A33}' => No,
'\u{0A36}' => No,
'\u{0A59}'...'\u{0A5B}' => No,
'\u{0A5E}' => No,
'\u{0B48}' => No,
'\u{0B4B}'...'\u{0B4C}' => No,
'\u{0B5C}'...'\u{0B5D}' => No,
'\u{0B94}' => No,
'\u{0BCA}'...'\u{0BCC}' => No,
'\u{0C48}' => No,
'\u{0CC0}' => No,
'\u{0CC7}'...'\u{0CC8}' => No,
'\u{0CCA}'...'\u{0CCB}' => No,
'\u{0D4A}'...'\u{0D4C}' => No,
'\u{0DDA}' => No,
'\u{0DDC}'...'\u{0DDE}' => No,
'\u{0E33}' => No,
'\u{0EB3}' => No,
'\u{0EDC}'...'\u{0EDD}' => No,
'\u{0F0C}' => No,
'\u{0F43}' => No,
'\u{0F4D}' => No,
'\u{0F52}' => No,
'\u{0F57}' => No,
'\u{0F5C}' => No,
'\u{0F69}' => No,
'\u{0F73}' => No,
'\u{0F75}'...'\u{0F79}' => No,
'\u{0F81}' => No,
'\u{0F93}' => No,
'\u{0F9D}' => No,
'\u{0FA2}' => No,
'\u{0FA7}' => No,
'\u{0FAC}' => No,
'\u{0FB9}' => No,
'\u{1026}' => No,
'\u{10FC}' => No,
'\u{1B06}' => No,
'\u{1B08}' => No,
'\u{1B0A}' => No,
'\u{1B0C}' => No,
'\u{1B0E}' => No,
'\u{1B12}' => No,
'\u{1B3B}' => No,
'\u{1B3D}' => No,
'\u{1B40}'...'\u{1B41}' => No,
'\u{1B43}' => No,
'\u{1D2C}'...'\u{1D2E}' => No,
'\u{1D30}'...'\u{1D3A}' => No,
'\u{1D3C}'...'\u{1D4D}' => No,
'\u{1D4F}'...'\u{1D6A}' => No,
'\u{1D78}' => No,
'\u{1D9B}'...'\u{1DBF}' => No,
'\u{1E00}'...'\u{1E9B}' => No,
'\u{1EA0}'...'\u{1EF9}' => No,
'\u{1F00}'...'\u{1F15}' => No,
'\u{1F18}'...'\u{1F1D}' => No,
'\u{1F20}'...'\u{1F45}' => No,
'\u{1F48}'...'\u{1F4D}' => No,
'\u{1F50}'...'\u{1F57}' => No,
'\u{1F59}' => No,
'\u{1F5B}' => No,
'\u{1F5D}' => No,
'\u{1F5F}'...'\u{1F7D}' => No,
'\u{1F80}'...'\u{1FB4}' => No,
'\u{1FB6}'...'\u{1FBC}' => No,
'\u{1FBD}' => No,
'\u{1FBE}' => No,
'\u{1FBF}'...'\u{1FC1}' => No,
'\u{1FC2}'...'\u{1FC4}' => No,
'\u{1FC6}'...'\u{1FCC}' => No,
'\u{1FCD}'...'\u{1FCF}' => No,
'\u{1FD0}'...'\u{1FD3}' => No,
'\u{1FD6}'...'\u{1FDB}' => No,
'\u{1FDD}'...'\u{1FDF}' => No,
'\u{1FE0}'...'\u{1FEC}' => No,
'\u{1FED}'...'\u{1FEF}' => No,
'\u{1FF2}'...'\u{1FF4}' => No,
'\u{1FF6}'...'\u{1FFC}' => No,
'\u{1FFD}'...'\u{1FFE}' => No,
'\u{2000}'...'\u{200A}' => No,
'\u{2011}' => No,
'\u{2017}' => No,
'\u{2024}'...'\u{2026}' => No,
'\u{202F}' => No,
'\u{2033}'...'\u{2034}' => No,
'\u{2036}'...'\u{2037}' => No,
'\u{203C}' => No,
'\u{203E}' => No,
'\u{2047}'...'\u{2049}' => No,
'\u{2057}' => No,
'\u{205F}' => No,
'\u{2070}' => No,
'\u{2071}' => No,
'\u{2074}'...'\u{2079}' => No,
'\u{207A}'...'\u{207C}' => No,
'\u{207D}' => No,
'\u{207E}' => No,
'\u{207F}' => No,
'\u{2080}'...'\u{2089}' => No,
'\u{208A}'...'\u{208C}' => No,
'\u{208D}' => No,
'\u{208E}' => No,
'\u{2090}'...'\u{209C}' => No,
'\u{20A8}' => No,
'\u{2100}'...'\u{2101}' => No,
'\u{2102}' => No,
'\u{2103}' => No,
'\u{2105}'...'\u{2106}' => No,
'\u{2107}' => No,
'\u{2109}' => No,
'\u{210A}'...'\u{2113}' => No,
'\u{2115}' => No,
'\u{2116}' => No,
'\u{2119}'...'\u{211D}' => No,
'\u{2120}'...'\u{2122}' => No,
'\u{2124}' => No,
'\u{2126}' => No,
'\u{2128}' => No,
'\u{212A}'...'\u{212D}' => No,
'\u{212F}'...'\u{2131}' => No,
'\u{2133}'...'\u{2134}' => No,
'\u{2135}'...'\u{2138}' => No,
'\u{2139}' => No,
'\u{213B}' => No,
'\u{213C}'...'\u{213F}' => No,
'\u{2140}' => No,
'\u{2145}'...'\u{2149}' => No,
'\u{2150}'...'\u{215F}' => No,
'\u{2160}'...'\u{217F}' => No,
'\u{2189}' => No,
'\u{219A}'...'\u{219B}' => No,
'\u{21AE}' => No,
'\u{21CD}' => No,
'\u{21CE}'...'\u{21CF}' => No,
'\u{2204}' => No,
'\u{2209}' => No,
'\u{220C}' => No,
'\u{2224}' => No,
'\u{2226}' => No,
'\u{222C}'...'\u{222D}' => No,
'\u{222F}'...'\u{2230}' => No,
'\u{2241}' => No,
'\u{2244}' => No,
'\u{2247}' => No,
'\u{2249}' => No,
'\u{2260}' => No,
'\u{2262}' => No,
'\u{226D}'...'\u{2271}' => No,
'\u{2274}'...'\u{2275}' => No,
'\u{2278}'...'\u{2279}' => No,
'\u{2280}'...'\u{2281}' => No,
'\u{2284}'...'\u{2285}' => No,
'\u{2288}'...'\u{2289}' => No,
'\u{22AC}'...'\u{22AF}' => No,
'\u{22E0}'...'\u{22E3}' => No,
'\u{22EA}'...'\u{22ED}' => No,
'\u{2329}' => No,
'\u{232A}' => No,
'\u{2460}'...'\u{249B}' => No,
'\u{249C}'...'\u{24E9}' => No,
'\u{24EA}' => No,
'\u{2A0C}' => No,
'\u{2A74}'...'\u{2A76}' => No,
'\u{2ADC}' => No,
'\u{2C7C}'...'\u{2C7D}' => No,
'\u{2D6F}' => No,
'\u{2E9F}' => No,
'\u{2EF3}' => No,
'\u{2F00}'...'\u{2FD5}' => No,
'\u{3000}' => No,
'\u{3036}' => No,
'\u{3038}'...'\u{303A}' => No,
'\u{304C}' => No,
'\u{304E}' => No,
'\u{3050}' => No,
'\u{3052}' => No,
'\u{3054}' => No,
'\u{3056}' => No,
'\u{3058}' => No,
'\u{305A}' => No,
'\u{305C}' => No,
'\u{305E}' => No,
'\u{3060}' => No,
'\u{3062}' => No,
'\u{3065}' => No,
'\u{3067}' => No,
'\u{3069}' => No,
'\u{3070}'...'\u{3071}' => No,
'\u{3073}'...'\u{3074}' => No,
'\u{3076}'...'\u{3077}' => No,
'\u{3079}'...'\u{307A}' => No,
'\u{307C}'...'\u{307D}' => No,
'\u{3094}' => No,
'\u{309B}'...'\u{309C}' => No,
'\u{309E}' => No,
'\u{309F}' => No,
'\u{30AC}' => No,
'\u{30AE}' => No,
'\u{30B0}' => No,
'\u{30B2}' => No,
'\u{30B4}' => No,
'\u{30B6}' => No,
'\u{30B8}' => No,
'\u{30BA}' => No,
'\u{30BC}' => No,
'\u{30BE}' => No,
'\u{30C0}' => No,
'\u{30C2}' => No,
'\u{30C5}' => No,
'\u{30C7}' => No,
'\u{30C9}' => No,
'\u{30D0}'...'\u{30D1}' => No,
'\u{30D3}'...'\u{30D4}' => No,
'\u{30D6}'...'\u{30D7}' => No,
'\u{30D9}'...'\u{30DA}' => No,
'\u{30DC}'...'\u{30DD}' => No,
'\u{30F4}' => No,
'\u{30F7}'...'\u{30FA}' => No,
'\u{30FE}' => No,
'\u{30FF}' => No,
'\u{3131}'...'\u{318E}' => No,
'\u{3192}'...'\u{3195}' => No,
'\u{3196}'...'\u{319F}' => No,
'\u{3200}'...'\u{321E}' => No,
'\u{3220}'...'\u{3229}' => No,
'\u{322A}'...'\u{3247}' => No,
'\u{3250}' => No,
'\u{3251}'...'\u{325F}' => No,
'\u{3260}'...'\u{327E}' => No,
'\u{3280}'...'\u{3289}' => No,
'\u{328A}'...'\u{32B0}' => No,
'\u{32B1}'...'\u{32BF}' => No,
'\u{32C0}'...'\u{32FE}' => No,
'\u{3300}'...'\u{33FF}' => No,
'\u{A69C}'...'\u{A69D}' => No,
'\u{A770}' => No,
'\u{A7F8}'...'\u{A7F9}' => No,
'\u{AB5C}'...'\u{AB5F}' => No,
'\u{AC00}'...'\u{D7A3}' => No,
'\u{F900}'...'\u{FA0D}' => No,
'\u{FA10}' => No,
'\u{FA12}' => No,
'\u{FA15}'...'\u{FA1E}' => No,
'\u{FA20}' => No,
'\u{FA22}' => No,
'\u{FA25}'...'\u{FA26}' => No,
'\u{FA2A}'...'\u{FA6D}' => No,
'\u{FA70}'...'\u{FAD9}' => No,
'\u{FB00}'...'\u{FB06}' => No,
'\u{FB13}'...'\u{FB17}' => No,
'\u{FB1D}' => No,
'\u{FB1F}'...'\u{FB28}' => No,
'\u{FB29}' => No,
'\u{FB2A}'...'\u{FB36}' => No,
'\u{FB38}'...'\u{FB3C}' => No,
'\u{FB3E}' => No,
'\u{FB40}'...'\u{FB41}' => No,
'\u{FB43}'...'\u{FB44}' => No,
'\u{FB46}'...'\u{FBB1}' => No,
'\u{FBD3}'...'\u{FD3D}' => No,
'\u{FD50}'...'\u{FD8F}' => No,
'\u{FD92}'...'\u{FDC7}' => No,
'\u{FDF0}'...'\u{FDFB}' => No,
'\u{FDFC}' => No,
'\u{FE10}'...'\u{FE16}' => No,
'\u{FE17}' => No,
'\u{FE18}' => No,
'\u{FE19}' => No,
'\u{FE30}' => No,
'\u{FE31}'...'\u{FE32}' => No,
'\u{FE33}'...'\u{FE34}' => No,
'\u{FE35}' => No,
'\u{FE36}' => No,
'\u{FE37}' => No,
'\u{FE38}' => No,
'\u{FE39}' => No,
'\u{FE3A}' => No,
'\u{FE3B}' => No,
'\u{FE3C}' => No,
'\u{FE3D}' => No,
'\u{FE3E}' => No,
'\u{FE3F}' => No,
'\u{FE40}' => No,
'\u{FE41}' => No,
'\u{FE42}' => No,
'\u{FE43}' => No,
'\u{FE44}' => No,
'\u{FE47}' => No,
'\u{FE48}' => No,
'\u{FE49}'...'\u{FE4C}' => No,
'\u{FE4D}'...'\u{FE4F}' => No,
'\u{FE50}'...'\u{FE52}' => No,
'\u{FE54}'...'\u{FE57}' => No,
'\u{FE58}' => No,
'\u{FE59}' => No,
'\u{FE5A}' => No,
'\u{FE5B}' => No,
'\u{FE5C}' => No,
'\u{FE5D}' => No,
'\u{FE5E}' => No,
'\u{FE5F}'...'\u{FE61}' => No,
'\u{FE62}' => No,
'\u{FE63}' => No,
'\u{FE64}'...'\u{FE66}' => No,
'\u{FE68}' => No,
'\u{FE69}' => No,
'\u{FE6A}'...'\u{FE6B}' => No,
'\u{FE70}'...'\u{FE72}' => No,
'\u{FE74}' => No,
'\u{FE76}'...'\u{FEFC}' => No,
'\u{FF01}'...'\u{FF03}' => No,
'\u{FF04}' => No,
'\u{FF05}'...'\u{FF07}' => No,
'\u{FF08}' => No,
'\u{FF09}' => No,
'\u{FF0A}' => No,
'\u{FF0B}' => No,
'\u{FF0C}' => No,
'\u{FF0D}' => No,
'\u{FF0E}'...'\u{FF0F}' => No,
'\u{FF10}'...'\u{FF19}' => No,
'\u{FF1A}'...'\u{FF1B}' => No,
'\u{FF1C}'...'\u{FF1E}' => No,
'\u{FF1F}'...'\u{FF20}' => No,
'\u{FF21}'...'\u{FF3A}' => No,
'\u{FF3B}' => No,
'\u{FF3C}' => No,
'\u{FF3D}' => No,
'\u{FF3E}' => No,
'\u{FF3F}' => No,
'\u{FF40}' => No,
'\u{FF41}'...'\u{FF5A}' => No,
'\u{FF5B}' => No,
'\u{FF5C}' => No,
'\u{FF5D}' => No,
'\u{FF5E}' => No,
'\u{FF5F}' => No,
'\u{FF60}' => No,
'\u{FF61}' => No,
'\u{FF62}' => No,
'\u{FF63}' => No,
'\u{FF64}'...'\u{FF65}' => No,
'\u{FF66}'...'\u{FF6F}' => No,
'\u{FF70}' => No,
'\u{FF71}'...'\u{FF9D}' => No,
'\u{FF9E}'...'\u{FF9F}' => No,
'\u{FFA0}'...'\u{FFBE}' => No,
'\u{FFC2}'...'\u{FFC7}' => No,
'\u{FFCA}'...'\u{FFCF}' => No,
'\u{FFD2}'...'\u{FFD7}' => No,
'\u{FFDA}'...'\u{FFDC}' => No,
'\u{FFE0}'...'\u{FFE1}' => No,
'\u{FFE2}' => No,
'\u{FFE3}' => No,
'\u{FFE4}' => No,
'\u{FFE5}'...'\u{FFE6}' => No,
'\u{FFE8}' => No,
'\u{FFE9}'...'\u{FFEC}' => No,
'\u{FFED}'...'\u{FFEE}' => No,
'\u{1109A}' => No,
'\u{1109C}' => No,
'\u{110AB}' => No,
'\u{1112E}'...'\u{1112F}' => No,
'\u{1134B}'...'\u{1134C}' => No,
'\u{114BB}'...'\u{114BC}' => No,
'\u{114BE}' => No,
'\u{115BA}'...'\u{115BB}' => No,
'\u{1D15E}'...'\u{1D164}' => No,
'\u{1D1BB}'...'\u{1D1C0}' => No,
'\u{1D400}'...'\u{1D454}' => No,
'\u{1D456}'...'\u{1D49C}' => No,
'\u{1D49E}'...'\u{1D49F}' => No,
'\u{1D4A2}' => No,
'\u{1D4A5}'...'\u{1D4A6}' => No,
'\u{1D4A9}'...'\u{1D4AC}' => No,
'\u{1D4AE}'...'\u{1D4B9}' => No,
'\u{1D4BB}' => No,
'\u{1D4BD}'...'\u{1D4C3}' => No,
'\u{1D4C5}'...'\u{1D505}' => No,
'\u{1D507}'...'\u{1D50A}' => No,
'\u{1D50D}'...'\u{1D514}' => No,
'\u{1D516}'...'\u{1D51C}' => No,
'\u{1D51E}'...'\u{1D539}' => No,
'\u{1D53B}'...'\u{1D53E}' => No,
'\u{1D540}'...'\u{1D544}' => No,
'\u{1D546}' => No,
'\u{1D54A}'...'\u{1D550}' => No,
'\u{1D552}'...'\u{1D6A5}' => No,
'\u{1D6A8}'...'\u{1D6C0}' => No,
'\u{1D6C1}' => No,
'\u{1D6C2}'...'\u{1D6DA}' => No,
'\u{1D6DB}' => No,
'\u{1D6DC}'...'\u{1D6FA}' => No,
'\u{1D6FB}' => No,
'\u{1D6FC}'...'\u{1D714}' => No,
'\u{1D715}' => No,
'\u{1D716}'...'\u{1D734}' => No,
'\u{1D735}' => No,
'\u{1D736}'...'\u{1D74E}' => No,
'\u{1D74F}' => No,
'\u{1D750}'...'\u{1D76E}' => No,
'\u{1D76F}' => No,
'\u{1D770}'...'\u{1D788}' => No,
'\u{1D789}' => No,
'\u{1D78A}'...'\u{1D7A8}' => No,
'\u{1D7A9}' => No,
'\u{1D7AA}'...'\u{1D7C2}' => No,
'\u{1D7C3}' => No,
'\u{1D7C4}'...'\u{1D7CB}' => No,
'\u{1D7CE}'...'\u{1D7FF}' => No,
'\u{1EE00}'...'\u{1EE03}' => No,
'\u{1EE05}'...'\u{1EE1F}' => No,
'\u{1EE21}'...'\u{1EE22}' => No,
'\u{1EE24}' => No,
'\u{1EE27}' => No,
'\u{1EE29}'...'\u{1EE32}' => No,
'\u{1EE34}'...'\u{1EE37}' => No,
'\u{1EE39}' => No,
'\u{1EE3B}' => No,
'\u{1EE42}' => No,
'\u{1EE47}' => No,
'\u{1EE49}' => No,
'\u{1EE4B}' => No,
'\u{1EE4D}'...'\u{1EE4F}' => No,
'\u{1EE51}'...'\u{1EE52}' => No,
'\u{1EE54}' => No,
'\u{1EE57}' => No,
'\u{1EE59}' => No,
'\u{1EE5B}' => No,
'\u{1EE5D}' => No,
'\u{1EE5F}' => No,
'\u{1EE61}'...'\u{1EE62}' => No,
'\u{1EE64}' => No,
'\u{1EE67}'...'\u{1EE6A}' => No,
'\u{1EE6C}'...'\u{1EE72}' => No,
'\u{1EE74}'...'\u{1EE77}' => No,
'\u{1EE79}'...'\u{1EE7C}' => No,
'\u{1EE7E}' => No,
'\u{1EE80}'...'\u{1EE89}' => No,
'\u{1EE8B}'...'\u{1EE9B}' => No,
'\u{1EEA1}'...'\u{1EEA3}' => No,
'\u{1EEA5}'...'\u{1EEA9}' => No,
'\u{1EEAB}'...'\u{1EEBB}' => No,
'\u{1F100}'...'\u{1F10A}' => No,
'\u{1F110}'...'\u{1F12E}' => No,
'\u{1F130}'...'\u{1F14F}' => No,
'\u{1F16A}'...'\u{1F16B}' => No,
'\u{1F190}' => No,
'\u{1F200}'...'\u{1F202}' => No,
'\u{1F210}'...'\u{1F23B}' => No,
'\u{1F240}'...'\u{1F248}' => No,
'\u{1F250}'...'\u{1F251}' => No,
'\u{2F800}'...'\u{2FA1D}' => No,
_ => Yes,
}
}
#[inline]
pub fn stream_safe_leading_nonstarters(c: char) -> usize {
match c {
+10
View File
@@ -166,10 +166,20 @@ fn test_quick_check() {
for test in NORMALIZATION_TESTS {
assert!(quick_check::is_nfc(test.nfc));
assert!(quick_check::is_nfd(test.nfd));
assert!(quick_check::is_nfkc(test.nfkc));
assert!(quick_check::is_nfkd(test.nfkd));
if test.nfc != test.nfd {
assert!(!quick_check::is_nfc(test.nfd));
assert!(!quick_check::is_nfd(test.nfc));
}
if test.nfkc != test.nfc {
assert!(!quick_check::is_nfkc(test.nfc));
assert!(quick_check::is_nfc(test.nfkc));
}
if test.nfkd != test.nfd {
assert!(!quick_check::is_nfkd(test.nfd));
assert!(quick_check::is_nfd(test.nfkd));
}
}
}