package userinterface.resources;

public enum UnicodeRange {
    BASICLATIN ( "Basic Latin", 32, 127), // THE 'SPACE' CHARACTER (UNICODE VALUE:32) WAS DELETED!!!
    LATIN1SUPPLEMENT ( "Latin-1 Supplement", 160, 255),
    LATINEXTENDEDA ( "Latin Extended-A", 256, 383),
    LATINEXTENDEDB ( "Latin Extended-B", 384, 591),
    IPAEXTENSIONS ( "IPA Extensions", 592, 687),
    SPACINGMODIFIERLETTERS ( "Spacing Modifier Letters", 688, 767),
    COMBININGDIACRITICALMARKS ( "Combining Diacritical Marks", 768, 879),
    GREEKANDCOPTIC ( "Greek and Coptic", 880, 1023),
    CYRILLIC ( "Cyrillic", 1024, 1279),
    CYRILLICSUPPLEMENTARY ( "Cyrillic Supplementary", 1280, 1327),
    ARMENIAN ( "Armenian", 1328, 1423),
    HEBREW ( "Hebrew", 1424, 1535),
    ARABIC ( "Arabic", 1536, 1791),
    SYRIAC ( "Syriac", 1792, 1871),
    THAANA ( "Thaana", 1920, 1983),
    DEVANAGARI ( "Devanagari", 2304, 2431),
    BENGALI ( "Bengali", 2432, 2559),
    GURMUKHI ( "Gurmukhi", 2560, 2687),
    GUJARATI ( "Gujarati", 2688, 2815),
    ORIYA ( "Oriya", 2816, 2943),
    TAMIL ( "Tamil", 2944, 3071),
    TELUGU ( "Telugu", 3072, 3199),
    KANNADA ( "Kannada", 3200, 3327),
    MALAYALAM ( "Malayalam", 3328, 3455),
    SINHALA ( "Sinhala", 3456, 3583),
    THAI ( "Thai", 3584, 3711),
    LAO ( "Lao", 3712, 3839),
    TIBETAN ( "Tibetan", 3840, 4095),
    MYANMAR ( "Myanmar", 4096, 4255),
    GEORGIAN ( "Georgian", 4256, 4351),
    HANGULJAMO ( "Hangul Jamo", 4352, 4607),
    ETHIOPIC ( "Ethiopic", 4608, 4991),
    CHEROKEE ( "Cherokee", 5024, 5119),
    UNIFIEDCANADIANABORIGINALSYLLABICS ( "Unified Canadian Aboriginal Syllabics", 5120, 5759),
    OGHAM ( "Ogham", 5760, 5791),
    RUNIC ( "Runic", 5792, 5887),
    TAGALOG ( "Tagalog", 5888, 5919),
    HANUNOO ( "Hanunoo", 5920, 5951),
    BUHID ( "Buhid", 5952, 5983),
    TAGBANWA ( "Tagbanwa", 5984, 6015),
    KHMER ( "Khmer", 6016, 6143),
    MONGOLIAN ( "Mongolian", 6144, 6319),
    LIMBU ( "Limbu", 6400, 6479),
    TAILE ( "Tai Le", 6480, 6527),
    KHMERSYMBOLS ( "Khmer Symbols", 6624, 6655),
    PHONETICEXTENSIONS ( "Phonetic Extensions", 7424, 7551),
    LATINEXTENDEDADDITIONAL ( "Latin Extended Additional", 7680, 7935),
    GREEKEXTENDED ( "Greek Extended", 7936, 8191),
    GENERALPUNCTUATION ( "General Punctuation", 8192, 8303),
    SUPERSCRIPTSANDSUBSCRIPTS ( "Superscripts and Subscripts", 8304, 8351),
    CURRENCYSYMBOLS ( "Currency Symbols", 8352, 8399),
    COMBININGDIACRITICALMARKSFORSYMBOLS ( "Combining Diacritical Marks for Symbols", 8400, 8447),
    LETTERLIKESYMBOLS ( "Letterlike Symbols", 8448, 8527),
    NUMBERFORMS ( "Number Forms", 8528, 8591),
    ARROWS ( "Arrows", 8592, 8703),
    MATHEMATICALOPERATORS ( "Mathematical Operators", 8704, 8959),
    MISCELLANEOUSTECHNICAL ( "Miscellaneous Technical", 8960, 9215),
    CONTROLPICTURES ( "Control Pictures", 9216, 9279),
    OPTICALCHARACTERRECOGNITION ( "Optical Character Recognition", 9280, 9311),
    ENCLOSEDALPHANUMERICS ( "Enclosed Alphanumerics", 9312, 9471),
    BOXDRAWING ( "Box Drawing", 9472, 9599),
    BLOCKELEMENTS ( "Block Elements", 9600, 9631),
    GEOMETRICSHAPES ( "Geometric Shapes", 9632, 9727),
    MISCELLANEOUSSYMBOLS ( "Miscellaneous Symbols", 9728, 9983),
    DINGBATS ( "Dingbats", 9984, 10175),
    MISCELLANEOUSMATHEMATICALSYMBOLSA ( "Miscellaneous Mathematical Symbols-A", 10176, 10223),
    SUPPLEMENTALARROWSA ( "Supplemental Arrows-A", 10224, 10239),
    BRAILLEPATTERNS ( "Braille Patterns", 10240, 10495),
    SUPPLEMENTALARROWSB ( "Supplemental Arrows-B", 10496, 10623),
    MISCELLANEOUSMATHEMATICALSYMBOLSB ( "Miscellaneous Mathematical Symbols-B", 10624, 10751),
    SUPPLEMENTALMATHEMATICALOPERATORS ( "Supplemental Mathematical Operators", 10752, 11007),
    MISCELLANEOUSSYMBOLSANDARROWS ( "Miscellaneous Symbols and Arrows", 11008, 11263),
    CJKRADICALSSUPPLEMENT ( "CJK Radicals Supplement", 11904, 12031),
    KANGXIRADICALS ( "Kangxi Radicals", 12032, 12255),
    IDEOGRAPHICDESCRIPTIONCHARACTERS ( "Ideographic Description Characters", 12272, 12287),
    CJKSYMBOLSANDPUNCTUATION ( "CJK Symbols and Punctuation", 12288, 12351),
    HIRAGANA ( "Hiragana", 12352, 12447),
    KATAKANA ( "Katakana", 12448, 12543),
    BOPOMOFO ( "Bopomofo", 12544, 12591),
    HANGULCOMPATIBILITYJAMO ( "Hangul Compatibility Jamo", 12592, 12687),
    KANBUN ( "Kanbun", 12688, 12703),
    BOPOMOFOEXTENDED ( "Bopomofo Extended", 12704, 12735),
    KATAKANAPHONETICEXTENSIONS ( "Katakana Phonetic Extensions", 12784, 12799),
    ENCLOSEDCJKLETTERSANDMONTHS ( "Enclosed CJK Letters and Months", 12800, 13055),
    CJKCOMPATIBILITY ( "CJK Compatibility", 13056, 13311),
    CJKUNIFIEDIDEOGRAPHSEXTENSIONA ( "CJK Unified Ideographs Extension A", 13312, 19903),
    YIJINGHEXAGRAMSYMBOLS ( "Yijing Hexagram Symbols", 19904, 19967),
    CJKUNIFIEDIDEOGRAPHS ( "CJK Unified Ideographs", 19968, 40959),
    YISYLLABLES ( "Yi Syllables", 40960, 42127),
    YIRADICALS ( "Yi Radicals", 42128, 42191),
    HANGULSYLLABLES ( "Hangul Syllables", 44032, 55215),
    CJKCOMPATIBILITYIDEOGRAPHS ( "CJK Compatibility Ideographs", 63744, 64255),
    ALPHABETICPRESENTATIONFORMS ( "Alphabetic Presentation Forms", 64256, 64335),
    ARABICPRESENTATIONFORMSA ( "Arabic Presentation Forms-A", 64336, 65023),
    COMBININGHALFMARKS ( "Combining Half Marks", 65056, 65071),
    CJKCOMPATIBILITYFORMS ( "CJK Compatibility Forms", 65072, 65103),
    SMALLFORMVARIANTS ( "Small Form Variants", 65104, 65135),
    ARABICPRESENTATIONFORMS ( "Arabic Presentation Forms-B", 65136, 65279),
    HALFWIDTHANDFULLWIDTHFORMS ( "Halfwidth and Fullwidth Forms", 65280, 65519),
    SPECIALS ( "Specials", 65520, 65535),
    LINEARBSYLLABARY ( "Linear B Syllabary", 65536, 65663),
    LINEARBIDEOGRAMS ( "Linear B Ideograms", 65664, 65791),
    AEGEANNUMBERS ( "Aegean Numbers", 65792, 65855),
    OLDITALIC ( "Old Italic", 66304, 66351),
    GOTHIC ( "Gothic", 66352, 66383),
    UGARITIC ( "Ugaritic", 66432, 66463),
    DESERET ( "Deseret", 66560, 66639),
    SHAVIAN ( "Shavian", 66640, 66687),
    OSMANYA ( "Osmanya", 66688, 66735),
    CYPRIOTSYLLABARY ( "Cypriot Syllabary", 67584, 67647),
//    BYZANTINEMUSICALSYMBOLS ( "Byzantine Musical Symbols", 118784, 119039),
//    MUSICALSYMBOLS ( "Musical Symbols", 119040, 119295),
//    TAIXUANJINGSYMBOLS ( "Tai Xuan Jing Symbols", 119552, 119647),
//    MATHEMATICALALPHANUMERICSYMBOLS ( "Mathematical Alphanumeric Symbols", 119808, 120831),
//    CJKUNIFIEDIDEOGRAPHSEXTENSIONB ( "CJK Unified Ideographs Extension B", 131072, 173791),
//    CJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT ( "CJK Compatibility Ideographs Supplement", 194560, 195103),
;
    public String longName;
    public int rangeMin;
    public int rangeMax;

    UnicodeRange(String longName, int rangeMin, int rangeMax) {
        this.longName = longName;
        this.rangeMin = rangeMin;
        this.rangeMax = rangeMax;
    }

    public static UnicodeRange getEnumByName(String input) {
        for (UnicodeRange unicodeRange : values()) {
            if (unicodeRange.longName.equals(input)) {
                return unicodeRange;
            }
        }
        return null;
    }

}
