unicode-blocks 0.1.10

This crate contains a list of all unicode blocks and provides some functions to search across them.
Documentation
use crate::{unicode_block::UnicodeBlock, unicode_blocks::*};

const CJK_BLOCKS: [UnicodeBlock; 42] = [
    CJK_UNIFIED_IDEOGRAPHS,
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A,
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B,
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C,
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D,
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E,
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F,
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_G,
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H,
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I,
    CJK_UNIFIED_IDEOGRAPHS_EXTENSION_J,
    CJK_COMPATIBILITY,
    CJK_COMPATIBILITY_FORMS,
    CJK_COMPATIBILITY_IDEOGRAPHS,
    CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT,
    CJK_RADICALS_SUPPLEMENT, // supplements the Kangxi radicals
    CJK_STROKES,
    CJK_SYMBOLS_AND_PUNCTUATION,
    IDEOGRAPHIC_SYMBOLS_AND_PUNCTUATION,
    YIJING_HEXAGRAM_SYMBOLS,
    HIRAGANA,
    KATAKANA,
    KATAKANA_PHONETIC_EXTENSIONS,
    KANA_EXTENDED_A,
    KANA_EXTENDED_B,
    KANA_SUPPLEMENT,
    SMALL_KANA_EXTENSION,
    KANBUN,
    BOPOMOFO,
    BOPOMOFO_EXTENDED,
    HANGUL_JAMO,
    HANGUL_COMPATIBILITY_JAMO,
    HANGUL_JAMO_EXTENDED_A,
    HANGUL_JAMO_EXTENDED_B,
    HANGUL_SYLLABLES,
    HALFWIDTH_AND_FULLWIDTH_FORMS, // !, ,, 6, @, Z, ヤ
    VERTICAL_FORMS,
    SMALL_FORM_VARIANTS,
    ENCLOSED_CJK_LETTERS_AND_MONTHS, // ㈠, ㋀
    ENCLOSED_IDEOGRAPHIC_SUPPLEMENT, // 🈲, 🈧
    KANGXI_RADICALS,
    IDEOGRAPHIC_DESCRIPTION_CHARACTERS, // ⿰, ⿸
];

/// Given a character, determine whether it is used in CJK.
#[inline]
pub fn is_cjk(c: char) -> bool {
    for b in CJK_BLOCKS.iter() {
        if b.contains(c) {
            return true;
        }
    }

    false
}

/// Given a `UnicodeBlock`, determine whether it is used in CJK.
#[inline]
pub fn is_cjk_block(unicode_block: UnicodeBlock) -> bool {
    CJK_BLOCKS.contains(&unicode_block)
}