# Generates a random character representing the ascii digits 0-9 def digit_char() = char(48, 58); # Generates a random lowercase character in the range a-z def lowercase_ascii_char() = char(97, 123); # Generates a random uppercase character in the range A-Z def uppercase_ascii_char() = char(65, 91); # Generates a random ascii alphanumeric character def ascii_alphanumeric_char() = select(lowercase_ascii_char(), uppercase_ascii_char(), digit_char()); # Generates a random unicode codepoint in the range: 0x0000, 0x007F def basic_latin_char() = char(0x0000, 0x007F); # Generates a random unicode codepoint in the range: 0x0080, 0x00FF def c1_controls_and_latin_1_supplement_char() = char(0x0080, 0x00FF); # Generates a random unicode codepoint in the range: 0x0100, 0x017F def latin_extended_a_char() = char(0x0100, 0x017F); # Generates a random unicode codepoint in the range: 0x0180, 0x024F def latin_extended_b_char() = char(0x0180, 0x024F); # Generates a random unicode codepoint in the range: 0x0250, 0x02AF def ipa_extensions_char() = char(0x0250, 0x02AF); # Generates a random unicode codepoint in the range: 0x02B0, 0x02FF def spacing_modifier_letters_char() = char(0x02B0, 0x02FF); # Generates a random unicode codepoint in the range: 0x0300, 0x036F def combining_diacritical_marks_char() = char(0x0300, 0x036F); # Generates a random unicode codepoint in the range: 0x0370, 0x03FF def greek_coptic_char() = char(0x0370, 0x03FF); # Generates a random unicode codepoint in the range: 0x0400, 0x04FF def cyrillic_char() = char(0x0400, 0x04FF); # Generates a random unicode codepoint in the range: 0x0500, 0x052F def cyrillic_supplement_char() = char(0x0500, 0x052F); # Generates a random unicode codepoint in the range: 0x0530, 0x058F def armenian_char() = char(0x0530, 0x058F); # Generates a random unicode codepoint in the range: 0x0590, 0x05FF def hebrew_char() = char(0x0590, 0x05FF); # Generates a random unicode codepoint in the range: 0x0600, 0x06FF def arabic_char() = char(0x0600, 0x06FF); # Generates a random unicode codepoint in the range: 0x0700, 0x074F def syriac_char() = char(0x0700, 0x074F); # Generates a random unicode codepoint in the range: 0x0780, 0x07BF def thaana_char() = char(0x0780, 0x07BF); # Generates a random unicode codepoint in the range: 0x0900, 0x097F def devanagari_char() = char(0x0900, 0x097F); # Generates a random unicode codepoint in the range: 0x0980, 0x09FF def bengali_assamese_char() = char(0x0980, 0x09FF); # Generates a random unicode codepoint in the range: 0x0A00, 0x0A7F def gurmukhi_char() = char(0x0A00, 0x0A7F); # Generates a random unicode codepoint in the range: 0x0A80, 0x0AFF def gujarati_char() = char(0x0A80, 0x0AFF); # Generates a random unicode codepoint in the range: 0x0B00, 0x0B7F def oriya_char() = char(0x0B00, 0x0B7F); # Generates a random unicode codepoint in the range: 0x0B80, 0x0BFF def tamil_char() = char(0x0B80, 0x0BFF); # Generates a random unicode codepoint in the range: 0x0C00, 0x0C7F def telugu_char() = char(0x0C00, 0x0C7F); # Generates a random unicode codepoint in the range: 0x0C80, 0x0CFF def kannada_char() = char(0x0C80, 0x0CFF); # Generates a random unicode codepoint in the range: 0x0D00, 0x0DFF def malayalam_char() = char(0x0D00, 0x0DFF); # Generates a random unicode codepoint in the range: 0x0D80, 0x0DFF def sinhala_char() = char(0x0D80, 0x0DFF); # Generates a random unicode codepoint in the range: 0x0E00, 0x0E7F def thai_char() = char(0x0E00, 0x0E7F); # Generates a random unicode codepoint in the range: 0x0E80, 0x0EFF def lao_char() = char(0x0E80, 0x0EFF); # Generates a random unicode codepoint in the range: 0x0F00, 0x0FFF def tibetan_char() = char(0x0F00, 0x0FFF); # Generates a random unicode codepoint in the range: 0x1000, 0x109F def myanmar_char() = char(0x1000, 0x109F); # Generates a random unicode codepoint in the range: 0x10A0, 0x10FF def georgian_char() = char(0x10A0, 0x10FF); # Generates a random unicode codepoint in the range: 0x1100, 0x11FF def hangul_jamo_char() = char(0x1100, 0x11FF); # Generates a random unicode codepoint in the range: 0x1200, 0x137F def ethiopic_char() = char(0x1200, 0x137F); # Generates a random unicode codepoint in the range: 0x13A0, 0x13FF def cherokee_char() = char(0x13A0, 0x13FF); # Generates a random unicode codepoint in the range: 0x1400, 0x167F def unified_canadian_aboriginal_syllabics_char() = char(0x1400, 0x167F); # Generates a random unicode codepoint in the range: 0x1680, 0x169F def ogham_char() = char(0x1680, 0x169F); # Generates a random unicode codepoint in the range: 0x16A0, 0x16FF def runic_char() = char(0x16A0, 0x16FF); # Generates a random unicode codepoint in the range: 0x1700, 0x171F def tagalog_char() = char(0x1700, 0x171F); # Generates a random unicode codepoint in the range: 0x1720, 0x173F def hanunoo_char() = char(0x1720, 0x173F); # Generates a random unicode codepoint in the range: 0x1740, 0x175F def buhid_char() = char(0x1740, 0x175F); # Generates a random unicode codepoint in the range: 0x1760, 0x177F def tagbanwa_char() = char(0x1760, 0x177F); # Generates a random unicode codepoint in the range: 0x1780, 0x17FF def khmer_char() = char(0x1780, 0x17FF); # Generates a random unicode codepoint in the range: 0x1800, 0x18AF def mongolian_char() = char(0x1800, 0x18AF); # Generates a random unicode codepoint in the range: 0x1900, 0x194F def limbu_char() = char(0x1900, 0x194F); # Generates a random unicode codepoint in the range: 0x1950, 0x197F def tai_le_char() = char(0x1950, 0x197F); # Generates a random unicode codepoint in the range: 0x19E0, 0x19FF def khmer_symbols_char() = char(0x19E0, 0x19FF); # Generates a random unicode codepoint in the range: 0x1D00, 0x1D7F def phonetic_extensions_char() = char(0x1D00, 0x1D7F); # Generates a random unicode codepoint in the range: 0x1E00, 0x1EFF def latin_extended_additional_char() = char(0x1E00, 0x1EFF); # Generates a random unicode codepoint in the range: 0x1F00, 0x1FFF def greek_extended_char() = char(0x1F00, 0x1FFF); # Generates a random unicode codepoint in the range: 0x2000, 0x206F def general_punctuation_char() = char(0x2000, 0x206F); # Generates a random unicode codepoint in the range: 0x2070, 0x209F def superscripts_and_subscripts_char() = char(0x2070, 0x209F); # Generates a random unicode codepoint in the range: 0x20A0, 0x20CF def currency_symbols_char() = char(0x20A0, 0x20CF); # Generates a random unicode codepoint in the range: 0x20D0, 0x20FF def combining_diacritical_marks_for_symbols_char() = char(0x20D0, 0x20FF); # Generates a random unicode codepoint in the range: 0x2100, 0x214F def letterlike_symbols_char() = char(0x2100, 0x214F); # Generates a random unicode codepoint in the range: 0x2150, 0x218F def number_forms_char() = char(0x2150, 0x218F); # Generates a random unicode codepoint in the range: 0x2190, 0x21FF def arrows_char() = char(0x2190, 0x21FF); # Generates a random unicode codepoint in the range: 0x2200, 0x22FF def mathematical_operators_char() = char(0x2200, 0x22FF); # Generates a random unicode codepoint in the range: 0x2300, 0x23FF def miscellaneous_technical_char() = char(0x2300, 0x23FF); # Generates a random unicode codepoint in the range: 0x2400, 0x243F def control_pictures_char() = char(0x2400, 0x243F); # Generates a random unicode codepoint in the range: 0x2440, 0x245F def optical_character_recognition_char() = char(0x2440, 0x245F); # Generates a random unicode codepoint in the range: 0x2460, 0x24FF def enclosed_alphanumerics_char() = char(0x2460, 0x24FF); # Generates a random unicode codepoint in the range: 0x2500, 0x257F def box_drawing_char() = char(0x2500, 0x257F); # Generates a random unicode codepoint in the range: 0x2580, 0x259F def block_elements_char() = char(0x2580, 0x259F); # Generates a random unicode codepoint in the range: 0x25A0, 0x25FF def geometric_shapes_char() = char(0x25A0, 0x25FF); # Generates a random unicode codepoint in the range: 0x2600, 0x26FF def miscellaneous_symbols_char() = char(0x2600, 0x26FF); # Generates a random unicode codepoint in the range: 0x2700, 0x27BF def dingbats_char() = char(0x2700, 0x27BF); # Generates a random unicode codepoint in the range: 0x27C0, 0x27EF def miscellaneous_mathematical_symbols_a_char() = char(0x27C0, 0x27EF); # Generates a random unicode codepoint in the range: 0x27F0, 0x27FF def supplemental_arrows_a_char() = char(0x27F0, 0x27FF); # Generates a random unicode codepoint in the range: 0x2800, 0x28FF def braille_patterns_char() = char(0x2800, 0x28FF); # Generates a random unicode codepoint in the range: 0x2900, 0x297F def supplemental_arrows_b_char() = char(0x2900, 0x297F); # Generates a random unicode codepoint in the range: 0x2980, 0x29FF def miscellaneous_mathematical_symbols_b_char() = char(0x2980, 0x29FF); # Generates a random unicode codepoint in the range: 0x2A00, 0x2AFF def supplemental_mathematical_operators_char() = char(0x2A00, 0x2AFF); # Generates a random unicode codepoint in the range: 0x2B00, 0x2BFF def miscellaneous_symbols_and_arrows_char() = char(0x2B00, 0x2BFF); # Generates a random unicode codepoint in the range: 0x2E80, 0x2EFF def cjk_radicals_supplement_char() = char(0x2E80, 0x2EFF); # Generates a random unicode codepoint in the range: 0x2F00, 0x2FDF def kangxi_radicals_char() = char(0x2F00, 0x2FDF); # Generates a random unicode codepoint in the range: 0x2FF0, 0x2FFF def ideographic_description_characters_char() = char(0x2FF0, 0x2FFF); # Generates a random unicode codepoint in the range: 0x3000, 0x303F def cjk_symbols_and_punctuation_char() = char(0x3000, 0x303F); # Generates a random unicode codepoint in the range: 0x3040, 0x309F def hiragana_char() = char(0x3040, 0x309F); # Generates a random unicode codepoint in the range: 0x30A0, 0x30FF def katakana_char() = char(0x30A0, 0x30FF); # Generates a random unicode codepoint in the range: 0x3100, 0x312F def bopomofo_char() = char(0x3100, 0x312F); # Generates a random unicode codepoint in the range: 0x3130, 0x318F def hangul_compatibility_jamo_char() = char(0x3130, 0x318F); # Generates a random unicode codepoint in the range: 0x3190, 0x319F def kanbun_char() = char(0x3190, 0x319F); # Generates a random unicode codepoint in the range: 0x31A0, 0x31BF def bopomofo_extended_char() = char(0x31A0, 0x31BF); # Generates a random unicode codepoint in the range: 0x31F0, 0x31FF def katakana_phonetic_extensions_char() = char(0x31F0, 0x31FF); # Generates a random unicode codepoint in the range: 0x3200, 0x32FF def enclosed_cjk_letters_and_months_char() = char(0x3200, 0x32FF); # Generates a random unicode codepoint in the range: 0x3300, 0x33FF def cjk_compatibility_char() = char(0x3300, 0x33FF); # Generates a random unicode codepoint in the range: 0x3400, 0x4DBF def cjk_unified_ideographs_extension_a_char() = char(0x3400, 0x4DBF); # Generates a random unicode codepoint in the range: 0x4DC0, 0x4DFF def yijing_hexagram_symbols_char() = char(0x4DC0, 0x4DFF); # Generates a random unicode codepoint in the range: 0x4E00, 0x9FAF def cjk_unified_ideographs_char() = char(0x4E00, 0x9FAF); # Generates a random unicode codepoint in the range: 0xA000, 0xA48F def yi_syllables_char() = char(0xA000, 0xA48F); # Generates a random unicode codepoint in the range: 0xA490, 0xA4CF def yi_radicals_char() = char(0xA490, 0xA4CF); # Generates a random unicode codepoint in the range: 0xAC00, 0xD7AF def hangul_syllables_char() = char(0xAC00, 0xD7AF); # Generates a random unicode codepoint in the range: 0xD800, 0xDBFF def high_surrogate_area_char() = char(0xD800, 0xDBFF); # Generates a random unicode codepoint in the range: 0xDC00, 0xDFFF def low_surrogate_area_char() = char(0xDC00, 0xDFFF); # Generates a random unicode codepoint in the range: 0xE000, 0xF8FF def private_use_area_char() = char(0xE000, 0xF8FF); # Generates a random unicode codepoint in the range: 0xF900, 0xFAFF def cjk_compatibility_ideographs_char() = char(0xF900, 0xFAFF); # Generates a random unicode codepoint in the range: 0xFB00, 0xFB4F def alphabetic_presentation_forms_char() = char(0xFB00, 0xFB4F); # Generates a random unicode codepoint in the range: 0xFB50, 0xFDFF def arabic_presentation_forms_a_char() = char(0xFB50, 0xFDFF); # Generates a random unicode codepoint in the range: 0xFE00, 0xFE0F def variation_selectors_char() = char(0xFE00, 0xFE0F); # Generates a random unicode codepoint in the range: 0xFE20, 0xFE2F def combining_half_marks_char() = char(0xFE20, 0xFE2F); # Generates a random unicode codepoint in the range: 0xFE30, 0xFE4F def cjk_compatibility_forms_char() = char(0xFE30, 0xFE4F); # Generates a random unicode codepoint in the range: 0xFE50, 0xFE6F def small_form_variants_char() = char(0xFE50, 0xFE6F); # Generates a random unicode codepoint in the range: 0xFE70, 0xFEFF def arabic_presentation_forms_b_char() = char(0xFE70, 0xFEFF); # Generates a random unicode codepoint in the range: 0xFF00, 0xFFEF def halfwidth_and_fullwidth_forms_char() = char(0xFF00, 0xFFEF); # Generates a random unicode codepoint in the range: 0xFFF0, 0xFFFF def specials_char() = char(0xFFF0, 0xFFFF); # Generates a random unicode codepoint in the range: 0x10000, 0x1007F def linear_b_syllabary_char() = char(0x10000, 0x1007F); # Generates a random unicode codepoint in the range: 0x10080, 0x100FF def linear_b_ideograms_char() = char(0x10080, 0x100FF); # Generates a random unicode codepoint in the range: 0x10100, 0x1013F def aegean_numbers_char() = char(0x10100, 0x1013F); # Generates a random unicode codepoint in the range: 0x10300, 0x1032F def old_italic_char() = char(0x10300, 0x1032F); # Generates a random unicode codepoint in the range: 0x10330, 0x1034F def gothic_char() = char(0x10330, 0x1034F); # Generates a random unicode codepoint in the range: 0x10380, 0x1039F def ugaritic_char() = char(0x10380, 0x1039F); # Generates a random unicode codepoint in the range: 0x10400, 0x1044F def deseret_char() = char(0x10400, 0x1044F); # Generates a random unicode codepoint in the range: 0x10450, 0x1047F def shavian_char() = char(0x10450, 0x1047F); # Generates a random unicode codepoint in the range: 0x10480, 0x104AF def osmanya_char() = char(0x10480, 0x104AF); # Generates a random unicode codepoint in the range: 0x10800, 0x1083F def cypriot_syllabary_char() = char(0x10800, 0x1083F); # Generates a random unicode codepoint in the range: 0x1D000, 0x1D0FF def byzantine_musical_symbols_char() = char(0x1D000, 0x1D0FF); # Generates a random unicode codepoint in the range: 0x1D100, 0x1D1FF def musical_symbols_char() = char(0x1D100, 0x1D1FF); # Generates a random unicode codepoint in the range: 0x1D300, 0x1D35F def tai_xuan_jing_symbols_char() = char(0x1D300, 0x1D35F); # Generates a random unicode codepoint in the range: 0x1D400, 0x1D7FF def mathematical_alphanumeric_symbols_char() = char(0x1D400, 0x1D7FF); # Generates a random unicode codepoint in the range: 0x20000, 0x2A6DF def cjk_unified_ideographs_extension_b_char() = char(0x20000, 0x2A6DF); # Generates a random unicode codepoint in the range: 0x2F800, 0x2FA1F def cjk_compatibility_ideographs_supplement_char() = char(0x2F800, 0x2FA1F); # Generates a random unicode character. The range of possible characters includes # whitespace, control character, combining diacritics, and other things that may # cause nasty surprises in strings. This will NOT, however, generate any characters from # the high_surrogate_area_char or low_surrogate_area_char ranges, as doing so could # result in invalid utf-8. def unicode_char() = select( basic_latin_char(), c1_controls_and_latin_1_supplement_char(), latin_extended_a_char(), latin_extended_b_char(), ipa_extensions_char(), spacing_modifier_letters_char(), combining_diacritical_marks_char(), greek_coptic_char(), cyrillic_char(), cyrillic_supplement_char(), armenian_char(), hebrew_char(), arabic_char(), syriac_char(), thaana_char(), devanagari_char(), bengali_assamese_char(), gurmukhi_char(), gujarati_char(), oriya_char(), tamil_char(), telugu_char(), kannada_char(), malayalam_char(), sinhala_char(), thai_char(), lao_char(), tibetan_char(), myanmar_char(), georgian_char(), hangul_jamo_char(), ethiopic_char(), cherokee_char(), unified_canadian_aboriginal_syllabics_char(), ogham_char(), runic_char(), tagalog_char(), hanunoo_char(), buhid_char(), tagbanwa_char(), khmer_char(), mongolian_char(), limbu_char(), tai_le_char(), khmer_symbols_char(), phonetic_extensions_char(), latin_extended_additional_char(), greek_extended_char(), general_punctuation_char(), superscripts_and_subscripts_char(), currency_symbols_char(), combining_diacritical_marks_for_symbols_char(), letterlike_symbols_char(), number_forms_char(), arrows_char(), mathematical_operators_char(), miscellaneous_technical_char(), control_pictures_char(), optical_character_recognition_char(), enclosed_alphanumerics_char(), box_drawing_char(), block_elements_char(), geometric_shapes_char(), miscellaneous_symbols_char(), dingbats_char(), miscellaneous_mathematical_symbols_a_char(), supplemental_arrows_a_char(), braille_patterns_char(), supplemental_arrows_b_char(), miscellaneous_mathematical_symbols_b_char(), supplemental_mathematical_operators_char(), miscellaneous_symbols_and_arrows_char(), cjk_radicals_supplement_char(), kangxi_radicals_char(), ideographic_description_characters_char(), cjk_symbols_and_punctuation_char(), hiragana_char(), katakana_char(), bopomofo_char(), hangul_compatibility_jamo_char(), kanbun_char(), bopomofo_extended_char(), katakana_phonetic_extensions_char(), enclosed_cjk_letters_and_months_char(), cjk_compatibility_char(), cjk_unified_ideographs_extension_a_char(), yijing_hexagram_symbols_char(), cjk_unified_ideographs_char(), yi_syllables_char(), yi_radicals_char(), hangul_syllables_char(), private_use_area_char(), cjk_compatibility_ideographs_char(), alphabetic_presentation_forms_char(), arabic_presentation_forms_a_char(), variation_selectors_char(), combining_half_marks_char(), cjk_compatibility_forms_char(), small_form_variants_char(), arabic_presentation_forms_b_char(), halfwidth_and_fullwidth_forms_char(), specials_char(), linear_b_syllabary_char(), linear_b_ideograms_char(), aegean_numbers_char(), old_italic_char(), gothic_char(), ugaritic_char(), deseret_char(), shavian_char(), osmanya_char(), cypriot_syllabary_char(), byzantine_musical_symbols_char(), musical_symbols_char(), tai_xuan_jing_symbols_char(), mathematical_alphanumeric_symbols_char(), cjk_unified_ideographs_extension_b_char(), cjk_compatibility_ideographs_supplement_char() );