summaryrefslogtreecommitdiff
path: root/plugins/emoji/emoji.plugin.zsh
diff options
context:
space:
mode:
authorJames Bunch <fallwith@gmail.com>2015-07-15 21:26:15 -0700
committerJames Bunch <fallwith@gmail.com>2015-07-15 21:26:15 -0700
commite56c8983539d8498bf52d70bd9fbe78f1a5d54ad (patch)
treec0e4d288af29ec8b4ba43d186f3abb4330f15f64 /plugins/emoji/emoji.plugin.zsh
parenteb06484d4f3124a4fa922c25540fa80885fc35b5 (diff)
parent9a397254dacca687bf7d204ac9d31f02ca2af242 (diff)
downloadzsh-e56c8983539d8498bf52d70bd9fbe78f1a5d54ad.tar.gz
zsh-e56c8983539d8498bf52d70bd9fbe78f1a5d54ad.tar.bz2
zsh-e56c8983539d8498bf52d70bd9fbe78f1a5d54ad.zip
Merge pull request #1 from apjanke/emoji_plugin_3
emoji: auto-generate definitions from Unicode data files
Diffstat (limited to 'plugins/emoji/emoji.plugin.zsh')
-rw-r--r--plugins/emoji/emoji.plugin.zsh1046
1 files changed, 119 insertions, 927 deletions
diff --git a/plugins/emoji/emoji.plugin.zsh b/plugins/emoji/emoji.plugin.zsh
index be761871e..a98d0b714 100644
--- a/plugins/emoji/emoji.plugin.zsh
+++ b/plugins/emoji/emoji.plugin.zsh
@@ -1,876 +1,85 @@
-# Make emoji available within the ZSH terminal
+# emoji plugin
#
-# To output a specific emoji, use:
-# $> echo $emoji[<name>]
-# ex: $> echo $emoji[mouse_face]
+# Makes emoji support available within ZSH
#
-# To output a random emoji, use:
-# $> random_emoji
-# $> random_emoji_fruit
-# $> random_emoji_animal
-# $> random_emoji_vehicle
-# $> random_emoji_face
-#
-# To list all available emoji with names, use:
-# $> display_all_emoji
-# $> display_emoji_fruits
-# $> display_emoji_animals
-# $> display_emoji_vehicles
-# $> display_emoji_faces
-#
-# To use an emoji in a prompt:
-# PROMPT='$(echo $emoji[penguin]) > '
-# PROMPT='$(random_emoji_fruit) > '
-# eval surfer=$(echo $emoji[surfer])
-# PROMPT='$surfer > '
-#
-# emoji codes sourced from http://apps.timwhitlock.info/emoji/tables/unicode
+# See the README for documentation.
+
+_omz_emoji_plugin_dir="${0:h}"
+
+() {
+
+local LC_ALL=en_US.UTF-8
+
+typeset -gAH emoji_groups
+typeset -gAH emoji_con
+typeset -gAH emoji2
+typeset -gAH emoji_skintone
+
+source "$_omz_emoji_plugin_dir/emoji-char-definitions.zsh"
+unset _omz_emoji_plugin_dir
+
+# These additional emoji are not in the definition file, but are useful in conjunction with it
+
+# This is a combinin character that can be placed after any other character to surround
+# it in a "keycap" symbol.
+# The digits 0-9 are already in the emoji table as keycap_digit_<N>, keycap_ten, etc.
+# It's unclear whether this should be in the $emoji array, because those characters are all ones
+# which can be displayed on their own.
+#emoji[combining_enclosing_keycap]="\U20E3"
-typeset -A emoji
-emoji[grinning_face_with_smiling_eyes]='\xF0\x9F\x98\x81'
-emoji[face_with_tears_of_joy]='\xF0\x9F\x98\x82'
-emoji[smiling_face_with_open_mouth]='\xF0\x9F\x98\x83'
-emoji[smiling_face_with_open_mouth_and_smiling_eyes]='\xF0\x9F\x98\x84'
-emoji[smiling_face_with_open_mouth_and_cold_sweat]='\xF0\x9F\x98\x85'
-emoji[smiling_face_with_open_mouth_and_tightly_closed_eyes]='\xF0\x9F\x98\x86'
-emoji[winking_face]='\xF0\x9F\x98\x89'
-emoji[smiling_face_with_smiling_eyes]='\xF0\x9F\x98\x8A'
-emoji[face_savouring_delicious_food]='\xF0\x9F\x98\x8B'
-emoji[relieved_face]='\xF0\x9F\x98\x8C'
-emoji[smiling_face_with_heart_shaped_eyes]='\xF0\x9F\x98\x8D'
-emoji[smirking_face]='\xF0\x9F\x98\x8F'
-emoji[unamused_face]='\xF0\x9F\x98\x92'
-emoji[face_with_cold_sweat]='\xF0\x9F\x98\x93'
-emoji[pensive_face]='\xF0\x9F\x98\x94'
-emoji[confounded_face]='\xF0\x9F\x98\x96'
-emoji[face_throwing_a_kiss]='\xF0\x9F\x98\x98'
-emoji[kissing_face_with_closed_eyes]='\xF0\x9F\x98\x9A'
-emoji[face_with_stuck_out_tongue_and_winking_eye]='\xF0\x9F\x98\x9C'
-emoji[face_with_stuck_out_tongue_and_tightly_closed_eyes]='\xF0\x9F\x98\x9D'
-emoji[disappointed_face]='\xF0\x9F\x98\x9E'
-emoji[angry_face]='\xF0\x9F\x98\xA0'
-emoji[pouting_face]='\xF0\x9F\x98\xA1'
-emoji[crying_face]='\xF0\x9F\x98\xA2'
-emoji[persevering_face]='\xF0\x9F\x98\xA3'
-emoji[face_with_look_of_triumph]='\xF0\x9F\x98\xA4'
-emoji[disappointed_but_relieved_face]='\xF0\x9F\x98\xA5'
-emoji[fearful_face]='\xF0\x9F\x98\xA8'
-emoji[weary_face]='\xF0\x9F\x98\xA9'
-emoji[sleepy_face]='\xF0\x9F\x98\xAA'
-emoji[tired_face]='\xF0\x9F\x98\xAB'
-emoji[loudly_crying_face]='\xF0\x9F\x98\xAD'
-emoji[face_with_open_mouth_and_cold_sweat]='\xF0\x9F\x98\xB0'
-emoji[face_screaming_in_fear]='\xF0\x9F\x98\xB1'
-emoji[astonished_face]='\xF0\x9F\x98\xB2'
-emoji[flushed_face]='\xF0\x9F\x98\xB3'
-emoji[dizzy_face]='\xF0\x9F\x98\xB5'
-emoji[face_with_medical_mask]='\xF0\x9F\x98\xB7'
-emoji[grinning_cat_face_with_smiling_eyes]='\xF0\x9F\x98\xB8'
-emoji[cat_face_with_tears_of_joy]='\xF0\x9F\x98\xB9'
-emoji[smiling_cat_face_with_open_mouth]='\xF0\x9F\x98\xBA'
-emoji[smiling_cat_face_with_heart_shaped_eyes]='\xF0\x9F\x98\xBB'
-emoji[cat_face_with_wry_smile]='\xF0\x9F\x98\xBC'
-emoji[kissing_cat_face_with_closed_eyes]='\xF0\x9F\x98\xBD'
-emoji[pouting_cat_face]='\xF0\x9F\x98\xBE'
-emoji[crying_cat_face]='\xF0\x9F\x98\xBF'
-emoji[weary_cat_face]='\xF0\x9F\x99\x80'
-emoji[face_with_no_good_gesture]='\xF0\x9F\x99\x85'
-emoji[face_with_ok_gesture]='\xF0\x9F\x99\x86'
-emoji[person_bowing_deeply]='\xF0\x9F\x99\x87'
-emoji[see_no_evil_monkey]='\xF0\x9F\x99\x88'
-emoji[hear_no_evil_monkey]='\xF0\x9F\x99\x89'
-emoji[speak_no_evil_monkey]='\xF0\x9F\x99\x8A'
-emoji[happy_person_raising_one_hand]='\xF0\x9F\x99\x8B'
-emoji[person_raising_both_hands_in_celebration]='\xF0\x9F\x99\x8C'
-emoji[person_frowning]='\xF0\x9F\x99\x8D'
-emoji[person_with_pouting_face]='\xF0\x9F\x99\x8E'
-emoji[person_with_folded_hands]='\xF0\x9F\x99\x8F'
-emoji[black_scissors]='\xE2\x9C\x82'
-emoji[white_heavy_check_mark]='\xE2\x9C\x85'
-emoji[airplane]='\xE2\x9C\x88'
-emoji[envelope]='\xE2\x9C\x89'
-emoji[raised_fist]='\xE2\x9C\x8A'
-emoji[raised_hand]='\xE2\x9C\x8B'
-emoji[victory_hand]='\xE2\x9C\x8C'
-emoji[pencil]='\xE2\x9C\x8F'
-emoji[black_nib]='\xE2\x9C\x92'
-emoji[heavy_check_mark]='\xE2\x9C\x94'
-emoji[heavy_multiplication_x]='\xE2\x9C\x96'
-emoji[sparkles]='\xE2\x9C\xA8'
-emoji[eight_spoked_asterisk]='\xE2\x9C\xB3'
-emoji[eight_pointed_black_star]='\xE2\x9C\xB4'
-emoji[snowflake]='\xE2\x9D\x84'
-emoji[sparkle]='\xE2\x9D\x87'
-emoji[cross_mark]='\xE2\x9D\x8C'
-emoji[negative_squared_cross_mark]='\xE2\x9D\x8E'
-emoji[black_question_mark_ornament]='\xE2\x9D\x93'
-emoji[white_question_mark_ornament]='\xE2\x9D\x94'
-emoji[white_exclamation_mark_ornament]='\xE2\x9D\x95'
-emoji[heavy_exclamation_mark_symbol]='\xE2\x9D\x97'
-emoji[heavy_black_heart]='\xE2\x9D\xA4'
-emoji[heavy_plus_sign]='\xE2\x9E\x95'
-emoji[heavy_minus_sign]='\xE2\x9E\x96'
-emoji[heavy_division_sign]='\xE2\x9E\x97'
-emoji[black_rightwards_arrow]='\xE2\x9E\xA1'
-emoji[curly_loop]='\xE2\x9E\xB0'
-emoji[rocket]='\xF0\x9F\x9A\x80'
-emoji[railway_car]='\xF0\x9F\x9A\x83'
-emoji[high_speed_train]='\xF0\x9F\x9A\x84'
-emoji[high_speed_train_with_bullet_nose]='\xF0\x9F\x9A\x85'
-emoji[metro]='\xF0\x9F\x9A\x87'
-emoji[station]='\xF0\x9F\x9A\x89'
-emoji[bus]='\xF0\x9F\x9A\x8C'
-emoji[bus_stop]='\xF0\x9F\x9A\x8F'
-emoji[ambulance]='\xF0\x9F\x9A\x91'
-emoji[fire_engine]='\xF0\x9F\x9A\x92'
-emoji[police_car]='\xF0\x9F\x9A\x93'
-emoji[taxi]='\xF0\x9F\x9A\x95'
-emoji[automobile]='\xF0\x9F\x9A\x97'
-emoji[recreational_vehicle]='\xF0\x9F\x9A\x99'
-emoji[delivery_truck]='\xF0\x9F\x9A\x9A'
-emoji[ship]='\xF0\x9F\x9A\xA2'
-emoji[speedboat]='\xF0\x9F\x9A\xA4'
-emoji[horizontal_traffic_light]='\xF0\x9F\x9A\xA5'
-emoji[construction_sign]='\xF0\x9F\x9A\xA7'
-emoji[police_cars_revolving_light]='\xF0\x9F\x9A\xA8'
-emoji[triangular_flag_on_post]='\xF0\x9F\x9A\xA9'
-emoji[door]='\xF0\x9F\x9A\xAA'
-emoji[no_entry_sign]='\xF0\x9F\x9A\xAB'
-emoji[smoking_symbol]='\xF0\x9F\x9A\xAC'
-emoji[no_smoking_symbol]='\xF0\x9F\x9A\xAD'
-emoji[bicycle]='\xF0\x9F\x9A\xB2'
-emoji[pedestrian]='\xF0\x9F\x9A\xB6'
-emoji[mens_symbol]='\xF0\x9F\x9A\xB9'
-emoji[womens_symbol]='\xF0\x9F\x9A\xBA'
-emoji[restroom]='\xF0\x9F\x9A\xBB'
-emoji[baby_symbol]='\xF0\x9F\x9A\xBC'
-emoji[toilet]='\xF0\x9F\x9A\xBD'
-emoji[water_closet]='\xF0\x9F\x9A\xBE'
-emoji[bath]='\xF0\x9F\x9B\x80'
-emoji[circled_latin_capital_letter_m]='\xE2\x93\x82'
-emoji[negative_squared_latin_capital_letter_a]='\xF0\x9F\x85\xB0'
-emoji[negative_squared_latin_capital_letter_b]='\xF0\x9F\x85\xB1'
-emoji[negative_squared_latin_capital_letter_o]='\xF0\x9F\x85\xBE'
-emoji[negative_squared_latin_capital_letter_p]='\xF0\x9F\x85\xBF'
-emoji[negative_squared_ab]='\xF0\x9F\x86\x8E'
-emoji[squared_cl]='\xF0\x9F\x86\x91'
-emoji[squared_cool]='\xF0\x9F\x86\x92'
-emoji[squared_free]='\xF0\x9F\x86\x93'
-emoji[squared_id]='\xF0\x9F\x86\x94'
-emoji[squared_new]='\xF0\x9F\x86\x95'
-emoji[squared_ng]='\xF0\x9F\x86\x96'
-emoji[squared_ok]='\xF0\x9F\x86\x97'
-emoji[squared_sos]='\xF0\x9F\x86\x98'
-emoji[squared_up_with_exclamation_mark]='\xF0\x9F\x86\x99'
-emoji[squared_vs]='\xF0\x9F\x86\x9A'
-emoji[regional_indicator_symbol_letter_d_regional_indicator_symbol_letter_e]='\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA'
-emoji[regional_indicator_symbol_letter_g_regional_indicator_symbol_letter_b]='\xF0\x9F\x87\xAC\xF0\x9F\x87\xA7'
-emoji[regional_indicator_symbol_letter_c_regional_indicator_symbol_letter_n]='\xF0\x9F\x87\xA8\xF0\x9F\x87\xB3'
-emoji[regional_indicator_symbol_letter_j_regional_indicator_symbol_letter_p]='\xF0\x9F\x87\xAF\xF0\x9F\x87\xB5'
-emoji[regional_indicator_symbol_letter_k_regional_indicator_symbol_letter_r]='\xF0\x9F\x87\xB0\xF0\x9F\x87\xB7'
-emoji[regional_indicator_symbol_letter_f_regional_indicator_symbol_letter_r]='\xF0\x9F\x87\xAB\xF0\x9F\x87\xB7'
-emoji[regional_indicator_symbol_letter_e_regional_indicator_symbol_letter_s]='\xF0\x9F\x87\xAA\xF0\x9F\x87\xB8'
-emoji[regional_indicator_symbol_letter_i_regional_indicator_symbol_letter_t]='\xF0\x9F\x87\xAE\xF0\x9F\x87\xB9'
-emoji[regional_indicator_symbol_letter_u_regional_indicator_symbol_letter_s]='\xF0\x9F\x87\xBA\xF0\x9F\x87\xB8'
-emoji[regional_indicator_symbol_letter_r_regional_indicator_symbol_letter_u]='\xF0\x9F\x87\xB7\xF0\x9F\x87\xBA'
-emoji[squared_katakana_koko]='\xF0\x9F\x88\x81'
-emoji[squared_katakana_sa]='\xF0\x9F\x88\x82'
-emoji[squared_cjk_unified_ideograph_7121]='\xF0\x9F\x88\x9A'
-emoji[squared_cjk_unified_ideograph_6307]='\xF0\x9F\x88\xAF'
-emoji[squared_cjk_unified_ideograph_7981]='\xF0\x9F\x88\xB2'
-emoji[squared_cjk_unified_ideograph_7a7a]='\xF0\x9F\x88\xB3'
-emoji[squared_cjk_unified_ideograph_5408]='\xF0\x9F\x88\xB4'
-emoji[squared_cjk_unified_ideograph_6e80]='\xF0\x9F\x88\xB5'
-emoji[squared_cjk_unified_ideograph_6709]='\xF0\x9F\x88\xB6'
-emoji[squared_cjk_unified_ideograph_6708]='\xF0\x9F\x88\xB7'
-emoji[squared_cjk_unified_ideograph_7533]='\xF0\x9F\x88\xB8'
-emoji[squared_cjk_unified_ideograph_5272]='\xF0\x9F\x88\xB9'
-emoji[squared_cjk_unified_ideograph_55b6]='\xF0\x9F\x88\xBA'
-emoji[circled_ideograph_advantage]='\xF0\x9F\x89\x90'
-emoji[circled_ideograph_accept]='\xF0\x9F\x89\x91'
-emoji[copyright_sign]='\xC2\xA9'
-emoji[registered_sign]='\xC2\xAE'
-emoji[double_exclamation_mark]='\xE2\x80\xBC'
-emoji[exclamation_question_mark]='\xE2\x81\x89'
-emoji[digit_eight_combining_enclosing_keycap]='\x38\xE2\x83\xA3'
-emoji[digit_nine_combining_enclosing_keycap]='\x39\xE2\x83\xA3'
-emoji[digit_seven_combining_enclosing_keycap]='\x37\xE2\x83\xA3'
-emoji[digit_six_combining_enclosing_keycap]='\x36\xE2\x83\xA3'
-emoji[digit_one_combining_enclosing_keycap]='\x31\xE2\x83\xA3'
-emoji[digit_zero_combining_enclosing_keycap]='\x30\xE2\x83\xA3'
-emoji[digit_two_combining_enclosing_keycap]='\x32\xE2\x83\xA3'
-emoji[digit_three_combining_enclosing_keycap]='\x33\xE2\x83\xA3'
-emoji[digit_five_combining_enclosing_keycap]='\x35\xE2\x83\xA3'
-emoji[digit_four_combining_enclosing_keycap]='\x34\xE2\x83\xA3'
-emoji[number_sign_combining_enclosing_keycap]='\x23\xE2\x83\xA3'
-emoji[trade_mark_sign]='\xE2\x84\xA2'
-emoji[information_source]='\xE2\x84\xB9'
-emoji[left_right_arrow]='\xE2\x86\x94'
-emoji[up_down_arrow]='\xE2\x86\x95'
-emoji[north_west_arrow]='\xE2\x86\x96'
-emoji[north_east_arrow]='\xE2\x86\x97'
-emoji[south_east_arrow]='\xE2\x86\x98'
-emoji[south_west_arrow]='\xE2\x86\x99'
-emoji[leftwards_arrow_with_hook]='\xE2\x86\xA9'
-emoji[rightwards_arrow_with_hook]='\xE2\x86\xAA'
-emoji[watch]='\xE2\x8C\x9A'
-emoji[hourglass]='\xE2\x8C\x9B'
-emoji[black_right_pointing_double_triangle]='\xE2\x8F\xA9'
-emoji[black_left_pointing_double_triangle]='\xE2\x8F\xAA'
-emoji[black_up_pointing_double_triangle]='\xE2\x8F\xAB'
-emoji[black_down_pointing_double_triangle]='\xE2\x8F\xAC'
-emoji[alarm_clock]='\xE2\x8F\xB0'
-emoji[hourglass_with_flowing_sand]='\xE2\x8F\xB3'
-emoji[black_small_square]='\xE2\x96\xAA'
-emoji[white_small_square]='\xE2\x96\xAB'
-emoji[black_right_pointing_triangle]='\xE2\x96\xB6'
-emoji[black_left_pointing_triangle]='\xE2\x97\x80'
-emoji[white_medium_square]='\xE2\x97\xBB'
-emoji[black_medium_square]='\xE2\x97\xBC'
-emoji[white_medium_small_square]='\xE2\x97\xBD'
-emoji[black_medium_small_square]='\xE2\x97\xBE'
-emoji[black_sun_with_rays]='\xE2\x98\x80'
-emoji[cloud]='\xE2\x98\x81'
-emoji[black_telephone]='\xE2\x98\x8E'
-emoji[ballot_box_with_check]='\xE2\x98\x91'
-emoji[umbrella_with_rain_drops]='\xE2\x98\x94'
-emoji[hot_beverage]='\xE2\x98\x95'
-emoji[white_up_pointing_index]='\xE2\x98\x9D'
-emoji[white_smiling_face]='\xE2\x98\xBA'
-emoji[aries]='\xE2\x99\x88'
-emoji[taurus]='\xE2\x99\x89'
-emoji[gemini]='\xE2\x99\x8A'
-emoji[cancer]='\xE2\x99\x8B'
-emoji[leo]='\xE2\x99\x8C'
-emoji[virgo]='\xE2\x99\x8D'
-emoji[libra]='\xE2\x99\x8E'
-emoji[scorpius]='\xE2\x99\x8F'
-emoji[sagittarius]='\xE2\x99\x90'
-emoji[capricorn]='\xE2\x99\x91'
-emoji[aquarius]='\xE2\x99\x92'
-emoji[pisces]='\xE2\x99\x93'
-emoji[black_spade_suit]='\xE2\x99\xA0'
-emoji[black_club_suit]='\xE2\x99\xA3'
-emoji[black_heart_suit]='\xE2\x99\xA5'
-emoji[black_diamond_suit]='\xE2\x99\xA6'
-emoji[hot_springs]='\xE2\x99\xA8'
-emoji[black_universal_recycling_symbol]='\xE2\x99\xBB'
-emoji[wheelchair_symbol]='\xE2\x99\xBF'
-emoji[anchor]='\xE2\x9A\x93'
-emoji[warning_sign]='\xE2\x9A\xA0'
-emoji[high_voltage_sign]='\xE2\x9A\xA1'
-emoji[medium_white_circle]='\xE2\x9A\xAA'
-emoji[medium_black_circle]='\xE2\x9A\xAB'
-emoji[soccer_ball]='\xE2\x9A\xBD'
-emoji[baseball]='\xE2\x9A\xBE'
-emoji[snowman_without_snow]='\xE2\x9B\x84'
-emoji[sun_behind_cloud]='\xE2\x9B\x85'
-emoji[ophiuchus]='\xE2\x9B\x8E'
-emoji[no_entry]='\xE2\x9B\x94'
-emoji[church]='\xE2\x9B\xAA'
-emoji[fountain]='\xE2\x9B\xB2'
-emoji[flag_in_hole]='\xE2\x9B\xB3'
-emoji[sailboat]='\xE2\x9B\xB5'
-emoji[tent]='\xE2\x9B\xBA'
-emoji[fuel_pump]='\xE2\x9B\xBD'
-emoji[arrow_pointing_rightwards_then_curving_upwards]='\xE2\xA4\xB4'
-emoji[arrow_pointing_rightwards_then_curving_downwards]='\xE2\xA4\xB5'
-emoji[leftwards_black_arrow]='\xE2\xAC\x85'
-emoji[upwards_black_arrow]='\xE2\xAC\x86'
-emoji[downwards_black_arrow]='\xE2\xAC\x87'
-emoji[black_large_square]='\xE2\xAC\x9B'
-emoji[white_large_square]='\xE2\xAC\x9C'
-emoji[white_medium_star]='\xE2\xAD\x90'
-emoji[heavy_large_circle]='\xE2\xAD\x95'
-emoji[wavy_dash]='\xE3\x80\xB0'
-emoji[part_alternation_mark]='\xE3\x80\xBD'
-emoji[circled_ideograph_congratulation]='\xE3\x8A\x97'
-emoji[circled_ideograph_secret]='\xE3\x8A\x99'
-emoji[mahjong_tile_red_dragon]='\xF0\x9F\x80\x84'
-emoji[playing_card_black_joker]='\xF0\x9F\x83\x8F'
-emoji[cyclone]='\xF0\x9F\x8C\x80'
-emoji[foggy]='\xF0\x9F\x8C\x81'
-emoji[closed_umbrella]='\xF0\x9F\x8C\x82'
-emoji[night_with_stars]='\xF0\x9F\x8C\x83'
-emoji[sunrise_over_mountains]='\xF0\x9F\x8C\x84'
-emoji[sunrise]='\xF0\x9F\x8C\x85'
-emoji[cityscape_at_dusk]='\xF0\x9F\x8C\x86'
-emoji[sunset_over_buildings]='\xF0\x9F\x8C\x87'
-emoji[rainbow]='\xF0\x9F\x8C\x88'
-emoji[bridge_at_night]='\xF0\x9F\x8C\x89'
-emoji[water_wave]='\xF0\x9F\x8C\x8A'
-emoji[volcano]='\xF0\x9F\x8C\x8B'
-emoji[milky_way]='\xF0\x9F\x8C\x8C'
-emoji[earth_globe_asia_australia]='\xF0\x9F\x8C\x8F'
-emoji[new_moon_symbol]='\xF0\x9F\x8C\x91'
-emoji[first_quarter_moon_symbol]='\xF0\x9F\x8C\x93'
-emoji[waxing_gibbous_moon_symbol]='\xF0\x9F\x8C\x94'
-emoji[full_moon_symbol]='\xF0\x9F\x8C\x95'
-emoji[crescent_moon]='\xF0\x9F\x8C\x99'
-emoji[first_quarter_moon_with_face]='\xF0\x9F\x8C\x9B'
-emoji[glowing_star]='\xF0\x9F\x8C\x9F'
-emoji[shooting_star]='\xF0\x9F\x8C\xA0'
-emoji[chestnut]='\xF0\x9F\x8C\xB0'
-emoji[seedling]='\xF0\x9F\x8C\xB1'
-emoji[palm_tree]='\xF0\x9F\x8C\xB4'
-emoji[cactus]='\xF0\x9F\x8C\xB5'
-emoji[tulip]='\xF0\x9F\x8C\xB7'
-emoji[cherry_blossom]='\xF0\x9F\x8C\xB8'
-emoji[rose]='\xF0\x9F\x8C\xB9'
-emoji[hibiscus]='\xF0\x9F\x8C\xBA'
-emoji[sunflower]='\xF0\x9F\x8C\xBB'
-emoji[blossom]='\xF0\x9F\x8C\xBC'
-emoji[ear_of_maize]='\xF0\x9F\x8C\xBD'
-emoji[ear_of_rice]='\xF0\x9F\x8C\xBE'
-emoji[herb]='\xF0\x9F\x8C\xBF'
-emoji[four_leaf_clover]='\xF0\x9F\x8D\x80'
-emoji[maple_leaf]='\xF0\x9F\x8D\x81'
-emoji[fallen_leaf]='\xF0\x9F\x8D\x82'
-emoji[leaf_fluttering_in_wind]='\xF0\x9F\x8D\x83'
-emoji[mushroom]='\xF0\x9F\x8D\x84'
-emoji[tomato]='\xF0\x9F\x8D\x85'
-emoji[aubergine]='\xF0\x9F\x8D\x86'
-emoji[grapes]='\xF0\x9F\x8D\x87'
-emoji[melon]='\xF0\x9F\x8D\x88'
-emoji[watermelon]='\xF0\x9F\x8D\x89'
-emoji[tangerine]='\xF0\x9F\x8D\x8A'
-emoji[banana]='\xF0\x9F\x8D\x8C'
-emoji[pineapple]='\xF0\x9F\x8D\x8D'
-emoji[red_apple]='\xF0\x9F\x8D\x8E'
-emoji[green_apple]='\xF0\x9F\x8D\x8F'
-emoji[peach]='\xF0\x9F\x8D\x91'
-emoji[cherries]='\xF0\x9F\x8D\x92'
-emoji[strawberry]='\xF0\x9F\x8D\x93'
-emoji[hamburger]='\xF0\x9F\x8D\x94'
-emoji[slice_of_pizza]='\xF0\x9F\x8D\x95'
-emoji[meat_on_bone]='\xF0\x9F\x8D\x96'
-emoji[poultry_leg]='\xF0\x9F\x8D\x97'
-emoji[rice_cracker]='\xF0\x9F\x8D\x98'
-emoji[rice_ball]='\xF0\x9F\x8D\x99'
-emoji[cooked_rice]='\xF0\x9F\x8D\x9A'
-emoji[curry_and_rice]='\xF0\x9F\x8D\x9B'
-emoji[steaming_bowl]='\xF0\x9F\x8D\x9C'
-emoji[spaghetti]='\xF0\x9F\x8D\x9D'
-emoji[bread]='\xF0\x9F\x8D\x9E'
-emoji[french_fries]='\xF0\x9F\x8D\x9F'
-emoji[roasted_sweet_potato]='\xF0\x9F\x8D\xA0'
-emoji[dango]='\xF0\x9F\x8D\xA1'
-emoji[oden]='\xF0\x9F\x8D\xA2'
-emoji[sushi]='\xF0\x9F\x8D\xA3'
-emoji[fried_shrimp]='\xF0\x9F\x8D\xA4'
-emoji[fish_cake_with_swirl_design]='\xF0\x9F\x8D\xA5'
-emoji[soft_ice_cream]='\xF0\x9F\x8D\xA6'
-emoji[shaved_ice]='\xF0\x9F\x8D\xA7'
-emoji[ice_cream]='\xF0\x9F\x8D\xA8'
-emoji[doughnut]='\xF0\x9F\x8D\xA9'
-emoji[cookie]='\xF0\x9F\x8D\xAA'
-emoji[chocolate_bar]='\xF0\x9F\x8D\xAB'
-emoji[candy]='\xF0\x9F\x8D\xAC'
-emoji[lollipop]='\xF0\x9F\x8D\xAD'
-emoji[custard]='\xF0\x9F\x8D\xAE'
-emoji[honey_pot]='\xF0\x9F\x8D\xAF'
-emoji[shortcake]='\xF0\x9F\x8D\xB0'
-emoji[bento_box]='\xF0\x9F\x8D\xB1'
-emoji[pot_of_food]='\xF0\x9F\x8D\xB2'
-emoji[cooking]='\xF0\x9F\x8D\xB3'
-emoji[fork_and_knife]='\xF0\x9F\x8D\xB4'
-emoji[teacup_without_handle]='\xF0\x9F\x8D\xB5'
-emoji[sake_bottle_and_cup]='\xF0\x9F\x8D\xB6'
-emoji[wine_glass]='\xF0\x9F\x8D\xB7'
-emoji[cocktail_glass]='\xF0\x9F\x8D\xB8'
-emoji[tropical_drink]='\xF0\x9F\x8D\xB9'
-emoji[beer_mug]='\xF0\x9F\x8D\xBA'
-emoji[clinking_beer_mugs]='\xF0\x9F\x8D\xBB'
-emoji[ribbon]='\xF0\x9F\x8E\x80'
-emoji[wrapped_present]='\xF0\x9F\x8E\x81'
-emoji[birthday_cake]='\xF0\x9F\x8E\x82'
-emoji[jack_o_lantern]='\xF0\x9F\x8E\x83'
-emoji[christmas_tree]='\xF0\x9F\x8E\x84'
-emoji[father_christmas]='\xF0\x9F\x8E\x85'
-emoji[fireworks]='\xF0\x9F\x8E\x86'
-emoji[firework_sparkler]='\xF0\x9F\x8E\x87'
-emoji[balloon]='\xF0\x9F\x8E\x88'
-emoji[party_popper]='\xF0\x9F\x8E\x89'
-emoji[confetti_ball]='\xF0\x9F\x8E\x8A'
-emoji[tanabata_tree]='\xF0\x9F\x8E\x8B'
-emoji[crossed_flags]='\xF0\x9F\x8E\x8C'
-emoji[pine_decoration]='\xF0\x9F\x8E\x8D'
-emoji[japanese_dolls]='\xF0\x9F\x8E\x8E'
-emoji[carp_streamer]='\xF0\x9F\x8E\x8F'
-emoji[wind_chime]='\xF0\x9F\x8E\x90'
-emoji[moon_viewing_ceremony]='\xF0\x9F\x8E\x91'
-emoji[school_satchel]='\xF0\x9F\x8E\x92'
-emoji[graduation_cap]='\xF0\x9F\x8E\x93'
-emoji[carousel_horse]='\xF0\x9F\x8E\xA0'
-emoji[ferris_wheel]='\xF0\x9F\x8E\xA1'
-emoji[roller_coaster]='\xF0\x9F\x8E\xA2'
-emoji[fishing_pole_and_fish]='\xF0\x9F\x8E\xA3'
-emoji[microphone]='\xF0\x9F\x8E\xA4'
-emoji[movie_camera]='\xF0\x9F\x8E\xA5'
-emoji[cinema]='\xF0\x9F\x8E\xA6'
-emoji[headphone]='\xF0\x9F\x8E\xA7'
-emoji[artist_palette]='\xF0\x9F\x8E\xA8'
-emoji[top_hat]='\xF0\x9F\x8E\xA9'
-emoji[circus_tent]='\xF0\x9F\x8E\xAA'
-emoji[ticket]='\xF0\x9F\x8E\xAB'
-emoji[clapper_board]='\xF0\x9F\x8E\xAC'
-emoji[performing_arts]='\xF0\x9F\x8E\xAD'
-emoji[video_game]='\xF0\x9F\x8E\xAE'
-emoji[direct_hit]='\xF0\x9F\x8E\xAF'
-emoji[slot_machine]='\xF0\x9F\x8E\xB0'
-emoji[billiards]='\xF0\x9F\x8E\xB1'
-emoji[game_die]='\xF0\x9F\x8E\xB2'
-emoji[bowling]='\xF0\x9F\x8E\xB3'
-emoji[flower_playing_cards]='\xF0\x9F\x8E\xB4'
-emoji[musical_note]='\xF0\x9F\x8E\xB5'
-emoji[multiple_musical_notes]='\xF0\x9F\x8E\xB6'
-emoji[saxophone]='\xF0\x9F\x8E\xB7'
-emoji[guitar]='\xF0\x9F\x8E\xB8'
-emoji[musical_keyboard]='\xF0\x9F\x8E\xB9'
-emoji[trumpet]='\xF0\x9F\x8E\xBA'
-emoji[violin]='\xF0\x9F\x8E\xBB'
-emoji[musical_score]='\xF0\x9F\x8E\xBC'
-emoji[running_shirt_with_sash]='\xF0\x9F\x8E\xBD'
-emoji[tennis_racquet_and_ball]='\xF0\x9F\x8E\xBE'
-emoji[ski_and_ski_boot]='\xF0\x9F\x8E\xBF'
-emoji[basketball_and_hoop]='\xF0\x9F\x8F\x80'
-emoji[chequered_flag]='\xF0\x9F\x8F\x81'
-emoji[snowboarder]='\xF0\x9F\x8F\x82'
-emoji[runner]='\xF0\x9F\x8F\x83'
-emoji[surfer]='\xF0\x9F\x8F\x84'
-emoji[trophy]='\xF0\x9F\x8F\x86'
-emoji[american_football]='\xF0\x9F\x8F\x88'
-emoji[swimmer]='\xF0\x9F\x8F\x8A'
-emoji[house_building]='\xF0\x9F\x8F\xA0'
-emoji[house_with_garden]='\xF0\x9F\x8F\xA1'
-emoji[office_building]='\xF0\x9F\x8F\xA2'
-emoji[japanese_post_office]='\xF0\x9F\x8F\xA3'
-emoji[hospital]='\xF0\x9F\x8F\xA5'
-emoji[bank]='\xF0\x9F\x8F\xA6'
-emoji[automated_teller_machine]='\xF0\x9F\x8F\xA7'
-emoji[hotel]='\xF0\x9F\x8F\xA8'
-emoji[love_hotel]='\xF0\x9F\x8F\xA9'
-emoji[convenience_store]='\xF0\x9F\x8F\xAA'
-emoji[school]='\xF0\x9F\x8F\xAB'
-emoji[department_store]='\xF0\x9F\x8F\xAC'
-emoji[factory]='\xF0\x9F\x8F\xAD'
-emoji[izakaya_lantern]='\xF0\x9F\x8F\xAE'
-emoji[japanese_castle]='\xF0\x9F\x8F\xAF'
-emoji[european_castle]='\xF0\x9F\x8F\xB0'
-emoji[snail]='\xF0\x9F\x90\x8C'
-emoji[snake]='\xF0\x9F\x90\x8D'
-emoji[horse]='\xF0\x9F\x90\x8E'
-emoji[sheep]='\xF0\x9F\x90\x91'
-emoji[monkey]='\xF0\x9F\x90\x92'
-emoji[chicken]='\xF0\x9F\x90\x94'
-emoji[boar]='\xF0\x9F\x90\x97'
-emoji[elephant]='\xF0\x9F\x90\x98'
-emoji[octopus]='\xF0\x9F\x90\x99'
-emoji[spiral_shell]='\xF0\x9F\x90\x9A'
-emoji[bug]='\xF0\x9F\x90\x9B'
-emoji[ant]='\xF0\x9F\x90\x9C'
-emoji[honeybee]='\xF0\x9F\x90\x9D'
-emoji[lady_beetle]='\xF0\x9F\x90\x9E'
-emoji[fish]='\xF0\x9F\x90\x9F'
-emoji[tropical_fish]='\xF0\x9F\x90\xA0'
-emoji[blowfish]='\xF0\x9F\x90\xA1'
-emoji[turtle]='\xF0\x9F\x90\xA2'
-emoji[hatching_chick]='\xF0\x9F\x90\xA3'
-emoji[baby_chick]='\xF0\x9F\x90\xA4'
-emoji[front_facing_baby_chick]='\xF0\x9F\x90\xA5'
-emoji[bird]='\xF0\x9F\x90\xA6'
-emoji[penguin]='\xF0\x9F\x90\xA7'
-emoji[koala]='\xF0\x9F\x90\xA8'
-emoji[poodle]='\xF0\x9F\x90\xA9'
-emoji[bactrian_camel]='\xF0\x9F\x90\xAB'
-emoji[dolphin]='\xF0\x9F\x90\xAC'
-emoji[mouse_face]='\xF0\x9F\x90\xAD'
-emoji[cow_face]='\xF0\x9F\x90\xAE'
-emoji[tiger_face]='\xF0\x9F\x90\xAF'
-emoji[rabbit_face]='\xF0\x9F\x90\xB0'
-emoji[cat_face]='\xF0\x9F\x90\xB1'
-emoji[dragon_face]='\xF0\x9F\x90\xB2'
-emoji[spouting_whale]='\xF0\x9F\x90\xB3'
-emoji[horse_face]='\xF0\x9F\x90\xB4'
-emoji[monkey_face]='\xF0\x9F\x90\xB5'
-emoji[dog_face]='\xF0\x9F\x90\xB6'
-emoji[pig_face]='\xF0\x9F\x90\xB7'
-emoji[frog_face]='\xF0\x9F\x90\xB8'
-emoji[hamster_face]='\xF0\x9F\x90\xB9'
-emoji[wolf_face]='\xF0\x9F\x90\xBA'
-emoji[bear_face]='\xF0\x9F\x90\xBB'
-emoji[panda_face]='\xF0\x9F\x90\xBC'
-emoji[pig_nose]='\xF0\x9F\x90\xBD'
-emoji[paw_prints]='\xF0\x9F\x90\xBE'
-emoji[eyes]='\xF0\x9F\x91\x80'
-emoji[ear]='\xF0\x9F\x91\x82'
-emoji[nose]='\xF0\x9F\x91\x83'
-emoji[mouth]='\xF0\x9F\x91\x84'
-emoji[tongue]='\xF0\x9F\x91\x85'
-emoji[white_up_pointing_backhand_index]='\xF0\x9F\x91\x86'
-emoji[white_down_pointing_backhand_index]='\xF0\x9F\x91\x87'
-emoji[white_left_pointing_backhand_index]='\xF0\x9F\x91\x88'
-emoji[white_right_pointing_backhand_index]='\xF0\x9F\x91\x89'
-emoji[fisted_hand_sign]='\xF0\x9F\x91\x8A'
-emoji[waving_hand_sign]='\xF0\x9F\x91\x8B'
-emoji[ok_hand_sign]='\xF0\x9F\x91\x8C'
-emoji[thumbs_up_sign]='\xF0\x9F\x91\x8D'
-emoji[thumbs_down_sign]='\xF0\x9F\x91\x8E'
-emoji[clapping_hands_sign]='\xF0\x9F\x91\x8F'
-emoji[open_hands_sign]='\xF0\x9F\x91\x90'
-emoji[crown]='\xF0\x9F\x91\x91'
-emoji[womans_hat]='\xF0\x9F\x91\x92'
-emoji[eyeglasses]='\xF0\x9F\x91\x93'
-emoji[necktie]='\xF0\x9F\x91\x94'
-emoji[t_shirt]='\xF0\x9F\x91\x95'
-emoji[jeans]='\xF0\x9F\x91\x96'
-emoji[dress]='\xF0\x9F\x91\x97'
-emoji[kimono]='\xF0\x9F\x91\x98'
-emoji[bikini]='\xF0\x9F\x91\x99'
-emoji[womans_clothes]='\xF0\x9F\x91\x9A'
-emoji[purse]='\xF0\x9F\x91\x9B'
-emoji[handbag]='\xF0\x9F\x91\x9C'
-emoji[pouch]='\xF0\x9F\x91\x9D'
-emoji[mans_shoe]='\xF0\x9F\x91\x9E'
-emoji[athletic_shoe]='\xF0\x9F\x91\x9F'
-emoji[high_heeled_shoe]='\xF0\x9F\x91\xA0'
-emoji[womans_sandal]='\xF0\x9F\x91\xA1'
-emoji[womans_boots]='\xF0\x9F\x91\xA2'
-emoji[footprints]='\xF0\x9F\x91\xA3'
-emoji[bust_in_silhouette]='\xF0\x9F\x91\xA4'
-emoji[boy]='\xF0\x9F\x91\xA6'
-emoji[girl]='\xF0\x9F\x91\xA7'
-emoji[man]='\xF0\x9F\x91\xA8'
-emoji[woman]='\xF0\x9F\x91\xA9'
-emoji[family]='\xF0\x9F\x91\xAA'
-emoji[man_and_woman_holding_hands]='\xF0\x9F\x91\xAB'
-emoji[police_officer]='\xF0\x9F\x91\xAE'
-emoji[woman_with_bunny_ears]='\xF0\x9F\x91\xAF'
-emoji[bride_with_veil]='\xF0\x9F\x91\xB0'
-emoji[person_with_blond_hair]='\xF0\x9F\x91\xB1'
-emoji[man_with_gua_pi_mao]='\xF0\x9F\x91\xB2'
-emoji[man_with_turban]='\xF0\x9F\x91\xB3'
-emoji[older_man]='\xF0\x9F\x91\xB4'
-emoji[older_woman]='\xF0\x9F\x91\xB5'
-emoji[baby]='\xF0\x9F\x91\xB6'
-emoji[construction_worker]='\xF0\x9F\x91\xB7'
-emoji[princess]='\xF0\x9F\x91\xB8'
-emoji[japanese_ogre]='\xF0\x9F\x91\xB9'
-emoji[japanese_goblin]='\xF0\x9F\x91\xBA'
-emoji[ghost]='\xF0\x9F\x91\xBB'
-emoji[baby_angel]='\xF0\x9F\x91\xBC'
-emoji[extraterrestrial_alien]='\xF0\x9F\x91\xBD'
-emoji[alien_monster]='\xF0\x9F\x91\xBE'
-emoji[imp]='\xF0\x9F\x91\xBF'
-emoji[skull]='\xF0\x9F\x92\x80'
-emoji[information_desk_person]='\xF0\x9F\x92\x81'
-emoji[guardsman]='\xF0\x9F\x92\x82'
-emoji[dancer]='\xF0\x9F\x92\x83'
-emoji[lipstick]='\xF0\x9F\x92\x84'
-emoji[nail_polish]='\xF0\x9F\x92\x85'
-emoji[face_massage]='\xF0\x9F\x92\x86'
-emoji[haircut]='\xF0\x9F\x92\x87'
-emoji[barber_pole]='\xF0\x9F\x92\x88'
-emoji[syringe]='\xF0\x9F\x92\x89'
-emoji[pill]='\xF0\x9F\x92\x8A'
-emoji[kiss_mark]='\xF0\x9F\x92\x8B'
-emoji[love_letter]='\xF0\x9F\x92\x8C'
-emoji[ring]='\xF0\x9F\x92\x8D'
-emoji[gem_stone]='\xF0\x9F\x92\x8E'
-emoji[kiss]='\xF0\x9F\x92\x8F'
-emoji[bouquet]='\xF0\x9F\x92\x90'
-emoji[couple_with_heart]='\xF0\x9F\x92\x91'
-emoji[wedding]='\xF0\x9F\x92\x92'
-emoji[beating_heart]='\xF0\x9F\x92\x93'
-emoji[broken_heart]='\xF0\x9F\x92\x94'
-emoji[two_hearts]='\xF0\x9F\x92\x95'
-emoji[sparkling_heart]='\xF0\x9F\x92\x96'
-emoji[growing_heart]='\xF0\x9F\x92\x97'
-emoji[heart_with_arrow]='\xF0\x9F\x92\x98'
-emoji[blue_heart]='\xF0\x9F\x92\x99'
-emoji[green_heart]='\xF0\x9F\x92\x9A'
-emoji[yellow_heart]='\xF0\x9F\x92\x9B'
-emoji[purple_heart]='\xF0\x9F\x92\x9C'
-emoji[heart_with_ribbon]='\xF0\x9F\x92\x9D'
-emoji[revolving_hearts]='\xF0\x9F\x92\x9E'
-emoji[heart_decoration]='\xF0\x9F\x92\x9F'
-emoji[diamond_shape_with_a_dot_inside]='\xF0\x9F\x92\xA0'
-emoji[electric_light_bulb]='\xF0\x9F\x92\xA1'
-emoji[anger_symbol]='\xF0\x9F\x92\xA2'
-emoji[bomb]='\xF0\x9F\x92\xA3'
-emoji[sleeping_symbol]='\xF0\x9F\x92\xA4'
-emoji[collision_symbol]='\xF0\x9F\x92\xA5'
-emoji[splashing_sweat_symbol]='\xF0\x9F\x92\xA6'
-emoji[droplet]='\xF0\x9F\x92\xA7'
-emoji[dash_symbol]='\xF0\x9F\x92\xA8'
-emoji[pile_of_poo]='\xF0\x9F\x92\xA9'
-emoji[flexed_biceps]='\xF0\x9F\x92\xAA'
-emoji[dizzy_symbol]='\xF0\x9F\x92\xAB'
-emoji[speech_balloon]='\xF0\x9F\x92\xAC'
-emoji[white_flower]='\xF0\x9F\x92\xAE'
-emoji[hundred_points_symbol]='\xF0\x9F\x92\xAF'
-emoji[money_bag]='\xF0\x9F\x92\xB0'
-emoji[currency_exchange]='\xF0\x9F\x92\xB1'
-emoji[heavy_dollar_sign]='\xF0\x9F\x92\xB2'
-emoji[credit_card]='\xF0\x9F\x92\xB3'
-emoji[banknote_with_yen_sign]='\xF0\x9F\x92\xB4'
-emoji[banknote_with_dollar_sign]='\xF0\x9F\x92\xB5'
-emoji[money_with_wings]='\xF0\x9F\x92\xB8'
-emoji[chart_with_upwards_trend_and_yen_sign]='\xF0\x9F\x92\xB9'
-emoji[seat]='\xF0\x9F\x92\xBA'
-emoji[personal_computer]='\xF0\x9F\x92\xBB'
-emoji[briefcase]='\xF0\x9F\x92\xBC'
-emoji[minidisc]='\xF0\x9F\x92\xBD'
-emoji[floppy_disk]='\xF0\x9F\x92\xBE'
-emoji[optical_disc]='\xF0\x9F\x92\xBF'
-emoji[dvd]='\xF0\x9F\x93\x80'
-emoji[file_folder]='\xF0\x9F\x93\x81'
-emoji[open_file_folder]='\xF0\x9F\x93\x82'
-emoji[page_with_curl]='\xF0\x9F\x93\x83'
-emoji[page_facing_up]='\xF0\x9F\x93\x84'
-emoji[calendar]='\xF0\x9F\x93\x85'
-emoji[tear_off_calendar]='\xF0\x9F\x93\x86'
-emoji[card_index]='\xF0\x9F\x93\x87'
-emoji[chart_with_upwards_trend]='\xF0\x9F\x93\x88'
-emoji[chart_with_downwards_trend]='\xF0\x9F\x93\x89'
-emoji[bar_chart]='\xF0\x9F\x93\x8A'
-emoji[clipboard]='\xF0\x9F\x93\x8B'
-emoji[pushpin]='\xF0\x9F\x93\x8C'
-emoji[round_pushpin]='\xF0\x9F\x93\x8D'
-emoji[paperclip]='\xF0\x9F\x93\x8E'
-emoji[straight_ruler]='\xF0\x9F\x93\x8F'
-emoji[triangular_ruler]='\xF0\x9F\x93\x90'
-emoji[bookmark_tabs]='\xF0\x9F\x93\x91'
-emoji[ledger]='\xF0\x9F\x93\x92'
-emoji[notebook]='\xF0\x9F\x93\x93'
-emoji[notebook_with_decorative_cover]='\xF0\x9F\x93\x94'
-emoji[closed_book]='\xF0\x9F\x93\x95'
-emoji[open_book]='\xF0\x9F\x93\x96'
-emoji[green_book]='\xF0\x9F\x93\x97'
-emoji[blue_book]='\xF0\x9F\x93\x98'
-emoji[orange_book]='\xF0\x9F\x93\x99'
-emoji[books]='\xF0\x9F\x93\x9A'
-emoji[name_badge]='\xF0\x9F\x93\x9B'
-emoji[scroll]='\xF0\x9F\x93\x9C'
-emoji[memo]='\xF0\x9F\x93\x9D'
-emoji[telephone_receiver]='\xF0\x9F\x93\x9E'
-emoji[pager]='\xF0\x9F\x93\x9F'
-emoji[fax_machine]='\xF0\x9F\x93\xA0'
-emoji[satellite_antenna]='\xF0\x9F\x93\xA1'
-emoji[public_address_loudspeaker]='\xF0\x9F\x93\xA2'
-emoji[cheering_megaphone]='\xF0\x9F\x93\xA3'
-emoji[outbox_tray]='\xF0\x9F\x93\xA4'
-emoji[inbox_tray]='\xF0\x9F\x93\xA5'
-emoji[package]='\xF0\x9F\x93\xA6'
-emoji[e_mail_symbol]='\xF0\x9F\x93\xA7'
-emoji[incoming_envelope]='\xF0\x9F\x93\xA8'
-emoji[envelope_with_downwards_arrow_above]='\xF0\x9F\x93\xA9'
-emoji[closed_mailbox_with_lowered_flag]='\xF0\x9F\x93\xAA'
-emoji[closed_mailbox_with_raised_flag]='\xF0\x9F\x93\xAB'
-emoji[postbox]='\xF0\x9F\x93\xAE'
-emoji[newspaper]='\xF0\x9F\x93\xB0'
-emoji[mobile_phone]='\xF0\x9F\x93\xB1'
-emoji[mobile_phone_with_rightwards_arrow_at_left]='\xF0\x9F\x93\xB2'
-emoji[vibration_mode]='\xF0\x9F\x93\xB3'
-emoji[mobile_phone_off]='\xF0\x9F\x93\xB4'
-emoji[antenna_with_bars]='\xF0\x9F\x93\xB6'
-emoji[camera]='\xF0\x9F\x93\xB7'
-emoji[video_camera]='\xF0\x9F\x93\xB9'
-emoji[television]='\xF0\x9F\x93\xBA'
-emoji[radio]='\xF0\x9F\x93\xBB'
-emoji[videocassette]='\xF0\x9F\x93\xBC'
-emoji[clockwise_downwards_and_upwards_open_circle_arrows]='\xF0\x9F\x94\x83'
-emoji[speaker_with_three_sound_waves]='\xF0\x9F\x94\x8A'
-emoji[battery]='\xF0\x9F\x94\x8B'
-emoji[electric_plug]='\xF0\x9F\x94\x8C'
-emoji[left_pointing_magnifying_glass]='\xF0\x9F\x94\x8D'
-emoji[right_pointing_magnifying_glass]='\xF0\x9F\x94\x8E'
-emoji[lock_with_ink_pen]='\xF0\x9F\x94\x8F'
-emoji[closed_lock_with_key]='\xF0\x9F\x94\x90'
-emoji[key]='\xF0\x9F\x94\x91'
-emoji[lock]='\xF0\x9F\x94\x92'
-emoji[open_lock]='\xF0\x9F\x94\x93'
-emoji[bell]='\xF0\x9F\x94\x94'
-emoji[bookmark]='\xF0\x9F\x94\x96'
-emoji[link_symbol]='\xF0\x9F\x94\x97'
-emoji[radio_button]='\xF0\x9F\x94\x98'
-emoji[back_with_leftwards_arrow_above]='\xF0\x9F\x94\x99'
-emoji[end_with_leftwards_arrow_above]='\xF0\x9F\x94\x9A'
-emoji[on_with_exclamation_mark_with_left_right_arrow_above]='\xF0\x9F\x94\x9B'
-emoji[soon_with_rightwards_arrow_above]='\xF0\x9F\x94\x9C'
-emoji[top_with_upwards_arrow_above]='\xF0\x9F\x94\x9D'
-emoji[no_one_under_eighteen_symbol]='\xF0\x9F\x94\x9E'
-emoji[keycap_ten]='\xF0\x9F\x94\x9F'
-emoji[input_symbol_for_latin_capital_letters]='\xF0\x9F\x94\xA0'
-emoji[input_symbol_for_latin_small_letters]='\xF0\x9F\x94\xA1'
-emoji[input_symbol_for_numbers]='\xF0\x9F\x94\xA2'
-emoji[input_symbol_for_symbols]='\xF0\x9F\x94\xA3'
-emoji[input_symbol_for_latin_letters]='\xF0\x9F\x94\xA4'
-emoji[fire]='\xF0\x9F\x94\xA5'
-emoji[electric_torch]='\xF0\x9F\x94\xA6'
-emoji[wrench]='\xF0\x9F\x94\xA7'
-emoji[hammer]='\xF0\x9F\x94\xA8'
-emoji[nut_and_bolt]='\xF0\x9F\x94\xA9'
-emoji[hocho]='\xF0\x9F\x94\xAA'
-emoji[pistol]='\xF0\x9F\x94\xAB'
-emoji[crystal_ball]='\xF0\x9F\x94\xAE'
-emoji[six_pointed_star_with_middle_dot]='\xF0\x9F\x94\xAF'
-emoji[japanese_symbol_for_beginner]='\xF0\x9F\x94\xB0'
-emoji[trident_emblem]='\xF0\x9F\x94\xB1'
-emoji[black_square_button]='\xF0\x9F\x94\xB2'
-emoji[white_square_button]='\xF0\x9F\x94\xB3'
-emoji[large_red_circle]='\xF0\x9F\x94\xB4'
-emoji[large_blue_circle]='\xF0\x9F\x94\xB5'
-emoji[large_orange_diamond]='\xF0\x9F\x94\xB6'
-emoji[large_blue_diamond]='\xF0\x9F\x94\xB7'
-emoji[small_orange_diamond]='\xF0\x9F\x94\xB8'
-emoji[small_blue_diamond]='\xF0\x9F\x94\xB9'
-emoji[up_pointing_red_triangle]='\xF0\x9F\x94\xBA'
-emoji[down_pointing_red_triangle]='\xF0\x9F\x94\xBB'
-emoji[up_pointing_small_red_triangle]='\xF0\x9F\x94\xBC'
-emoji[down_pointing_small_red_triangle]='\xF0\x9F\x94\xBD'
-emoji[clock_face_one_oclock]='\xF0\x9F\x95\x90'
-emoji[clock_face_two_oclock]='\xF0\x9F\x95\x91'
-emoji[clock_face_three_oclock]='\xF0\x9F\x95\x92'
-emoji[clock_face_four_oclock]='\xF0\x9F\x95\x93'
-emoji[clock_face_five_oclock]='\xF0\x9F\x95\x94'
-emoji[clock_face_six_oclock]='\xF0\x9F\x95\x95'
-emoji[clock_face_seven_oclock]='\xF0\x9F\x95\x96'
-emoji[clock_face_eight_oclock]='\xF0\x9F\x95\x97'
-emoji[clock_face_nine_oclock]='\xF0\x9F\x95\x98'
-emoji[clock_face_ten_oclock]='\xF0\x9F\x95\x99'
-emoji[clock_face_eleven_oclock]='\xF0\x9F\x95\x9A'
-emoji[clock_face_twelve_oclock]='\xF0\x9F\x95\x9B'
-emoji[mount_fuji]='\xF0\x9F\x97\xBB'
-emoji[tokyo_tower]='\xF0\x9F\x97\xBC'
-emoji[statue_of_liberty]='\xF0\x9F\x97\xBD'
-emoji[silhouette_of_japan]='\xF0\x9F\x97\xBE'
-emoji[moyai]='\xF0\x9F\x97\xBF'
-emoji[grinning_face]='\xF0\x9F\x98\x80'
-emoji[smiling_face_with_halo]='\xF0\x9F\x98\x87'
-emoji[smiling_face_with_horns]='\xF0\x9F\x98\x88'
-emoji[smiling_face_with_sunglasses]='\xF0\x9F\x98\x8E'
-emoji[neutral_face]='\xF0\x9F\x98\x90'
-emoji[expressionless_face]='\xF0\x9F\x98\x91'
-emoji[confused_face]='\xF0\x9F\x98\x95'
-emoji[kissing_face]='\xF0\x9F\x98\x97'
-emoji[kissing_face_with_smiling_eyes]='\xF0\x9F\x98\x99'
-emoji[face_with_stuck_out_tongue]='\xF0\x9F\x98\x9B'
-emoji[worried_face]='\xF0\x9F\x98\x9F'
-emoji[frowning_face_with_open_mouth]='\xF0\x9F\x98\xA6'
-emoji[anguished_face]='\xF0\x9F\x98\xA7'
-emoji[grimacing_face]='\xF0\x9F\x98\xAC'
-emoji[face_with_open_mouth]='\xF0\x9F\x98\xAE'
-emoji[hushed_face]='\xF0\x9F\x98\xAF'
-emoji[sleeping_face]='\xF0\x9F\x98\xB4'
-emoji[face_without_mouth]='\xF0\x9F\x98\xB6'
-emoji[helicopter]='\xF0\x9F\x9A\x81'
-emoji[steam_locomotive]='\xF0\x9F\x9A\x82'
-emoji[train]='\xF0\x9F\x9A\x86'
-emoji[light_rail]='\xF0\x9F\x9A\x88'
-emoji[tram]='\xF0\x9F\x9A\x8A'
-emoji[oncoming_bus]='\xF0\x9F\x9A\x8D'
-emoji[trolleybus]='\xF0\x9F\x9A\x8E'
-emoji[minibus]='\xF0\x9F\x9A\x90'
-emoji[oncoming_police_car]='\xF0\x9F\x9A\x94'
-emoji[oncoming_taxi]='\xF0\x9F\x9A\x96'
-emoji[oncoming_automobile]='\xF0\x9F\x9A\x98'
-emoji[articulated_lorry]='\xF0\x9F\x9A\x9B'
-emoji[tractor]='\xF0\x9F\x9A\x9C'
-emoji[monorail]='\xF0\x9F\x9A\x9D'
-emoji[mountain_railway]='\xF0\x9F\x9A\x9E'
-emoji[suspension_railway]='\xF0\x9F\x9A\x9F'
-emoji[mountain_cableway]='\xF0\x9F\x9A\xA0'
-emoji[aerial_tramway]='\xF0\x9F\x9A\xA1'
-emoji[rowboat]='\xF0\x9F\x9A\xA3'
-emoji[vertical_traffic_light]='\xF0\x9F\x9A\xA6'
-emoji[put_litter_in_its_place_symbol]='\xF0\x9F\x9A\xAE'
-emoji[do_not_litter_symbol]='\xF0\x9F\x9A\xAF'
-emoji[potable_water_symbol]='\xF0\x9F\x9A\xB0'
-emoji[non_potable_water_symbol]='\xF0\x9F\x9A\xB1'
-emoji[no_bicycles]='\xF0\x9F\x9A\xB3'
-emoji[bicyclist]='\xF0\x9F\x9A\xB4'
-emoji[mountain_bicyclist]='\xF0\x9F\x9A\xB5'
-emoji[no_pedestrians]='\xF0\x9F\x9A\xB7'
-emoji[children_crossing]='\xF0\x9F\x9A\xB8'
-emoji[shower]='\xF0\x9F\x9A\xBF'
-emoji[bathtub]='\xF0\x9F\x9B\x81'
-emoji[passport_control]='\xF0\x9F\x9B\x82'
-emoji[customs]='\xF0\x9F\x9B\x83'
-emoji[baggage_claim]='\xF0\x9F\x9B\x84'
-emoji[left_luggage]='\xF0\x9F\x9B\x85'
-emoji[earth_globe_europe_africa]='\xF0\x9F\x8C\x8D'
-emoji[earth_globe_americas]='\xF0\x9F\x8C\x8E'
-emoji[globe_with_meridians]='\xF0\x9F\x8C\x90'
-emoji[waxing_crescent_moon_symbol]='\xF0\x9F\x8C\x92'
-emoji[waning_gibbous_moon_symbol]='\xF0\x9F\x8C\x96'
-emoji[last_quarter_moon_symbol]='\xF0\x9F\x8C\x97'
-emoji[waning_crescent_moon_symbol]='\xF0\x9F\x8C\x98'
-emoji[new_moon_with_face]='\xF0\x9F\x8C\x9A'
-emoji[last_quarter_moon_with_face]='\xF0\x9F\x8C\x9C'
-emoji[full_moon_with_face]='\xF0\x9F\x8C\x9D'
-emoji[sun_with_face]='\xF0\x9F\x8C\x9E'
-emoji[evergreen_tree]='\xF0\x9F\x8C\xB2'
-emoji[deciduous_tree]='\xF0\x9F\x8C\xB3'
-emoji[lemon]='\xF0\x9F\x8D\x8B'
-emoji[pear]='\xF0\x9F\x8D\x90'
-emoji[baby_bottle]='\xF0\x9F\x8D\xBC'
-emoji[horse_racing]='\xF0\x9F\x8F\x87'
-emoji[rugby_football]='\xF0\x9F\x8F\x89'
-emoji[european_post_office]='\xF0\x9F\x8F\xA4'
-emoji[rat]='\xF0\x9F\x90\x80'
-emoji[mouse]='\xF0\x9F\x90\x81'
-emoji[ox]='\xF0\x9F\x90\x82'
-emoji[water_buffalo]='\xF0\x9F\x90\x83'
-emoji[cow]='\xF0\x9F\x90\x84'
-emoji[tiger]='\xF0\x9F\x90\x85'
-emoji[leopard]='\xF0\x9F\x90\x86'
-emoji[rabbit]='\xF0\x9F\x90\x87'
-emoji[cat]='\xF0\x9F\x90\x88'
-emoji[dragon]='\xF0\x9F\x90\x89'
-emoji[crocodile]='\xF0\x9F\x90\x8A'
-emoji[whale]='\xF0\x9F\x90\x8B'
-emoji[ram]='\xF0\x9F\x90\x8F'
-emoji[goat]='\xF0\x9F\x90\x90'
-emoji[rooster]='\xF0\x9F\x90\x93'
-emoji[dog]='\xF0\x9F\x90\x95'
-emoji[pig]='\xF0\x9F\x90\x96'
-emoji[dromedary_camel]='\xF0\x9F\x90\xAA'
-emoji[busts_in_silhouette]='\xF0\x9F\x91\xA5'
-emoji[two_men_holding_hands]='\xF0\x9F\x91\xAC'
-emoji[two_women_holding_hands]='\xF0\x9F\x91\xAD'
-emoji[thought_balloon]='\xF0\x9F\x92\xAD'
-emoji[banknote_with_euro_sign]='\xF0\x9F\x92\xB6'
-emoji[banknote_with_pound_sign]='\xF0\x9F\x92\xB7'
-emoji[open_mailbox_with_raised_flag]='\xF0\x9F\x93\xAC'
-emoji[open_mailbox_with_lowered_flag]='\xF0\x9F\x93\xAD'
-emoji[postal_horn]='\xF0\x9F\x93\xAF'
-emoji[no_mobile_phones]='\xF0\x9F\x93\xB5'
-emoji[twisted_rightwards_arrows]='\xF0\x9F\x94\x80'
-emoji[clockwise_rightwards_and_leftwards_open_circle_arrows]='\xF0\x9F\x94\x81'
-emoji[clockwise_rightwards_and_leftwards_open_circle_arrows_with_circled_one_overlay]='\xF0\x9F\x94\x82'
-emoji[anticlockwise_downwards_and_upwards_open_circle_arrows]='\xF0\x9F\x94\x84'
-emoji[low_brightness_symbol]='\xF0\x9F\x94\x85'
-emoji[high_brightness_symbol]='\xF0\x9F\x94\x86'
-emoji[speaker_with_cancellation_stroke]='\xF0\x9F\x94\x87'
-emoji[speaker_with_one_sound_wave]='\xF0\x9F\x94\x89'
-emoji[bell_with_cancellation_stroke]='\xF0\x9F\x94\x95'
-emoji[microscope]='\xF0\x9F\x94\xAC'
-emoji[telescope]='\xF0\x9F\x94\xAD'
-emoji[clock_face_one_thirty]='\xF0\x9F\x95\x9C'
-emoji[clock_face_two_thirty]='\xF0\x9F\x95\x9D'
-emoji[clock_face_three_thirty]='\xF0\x9F\x95\x9E'
-emoji[clock_face_four_thirty]='\xF0\x9F\x95\x9F'
-emoji[clock_face_five_thirty]='\xF0\x9F\x95\xA0'
-emoji[clock_face_six_thirty]='\xF0\x9F\x95\xA1'
-emoji[clock_face_seven_thirty]='\xF0\x9F\x95\xA2'
-emoji[clock_face_eight_thirty]='\xF0\x9F\x95\xA3'
-emoji[clock_face_nine_thirty]='\xF0\x9F\x95\xA4'
-emoji[clock_face_ten_thirty]='\xF0\x9F\x95\xA5'
-emoji[clock_face_eleven_thirty]='\xF0\x9F\x95\xA6'
-emoji[clock_face_twelve_thirty]='\xF0\x9F\x95\xA7'
+emoji[regional_indicator_symbol_letter_d_regional_indicator_symbol_letter_e]=$'\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA'
+emoji[regional_indicator_symbol_letter_g_regional_indicator_symbol_letter_b]=$'\xF0\x9F\x87\xAC\xF0\x9F\x87\xA7'
+emoji[regional_indicator_symbol_letter_c_regional_indicator_symbol_letter_n]=$'\xF0\x9F\x87\xA8\xF0\x9F\x87\xB3'
+emoji[regional_indicator_symbol_letter_j_regional_indicator_symbol_letter_p]=$'\xF0\x9F\x87\xAF\xF0\x9F\x87\xB5'
+emoji[regional_indicator_symbol_letter_k_regional_indicator_symbol_letter_r]=$'\xF0\x9F\x87\xB0\xF0\x9F\x87\xB7'
+emoji[regional_indicator_symbol_letter_f_regional_indicator_symbol_letter_r]=$'\xF0\x9F\x87\xAB\xF0\x9F\x87\xB7'
+emoji[regional_indicator_symbol_letter_e_regional_indicator_symbol_letter_s]=$'\xF0\x9F\x87\xAA\xF0\x9F\x87\xB8'
+emoji[regional_indicator_symbol_letter_i_regional_indicator_symbol_letter_t]=$'\xF0\x9F\x87\xAE\xF0\x9F\x87\xB9'
+emoji[regional_indicator_symbol_letter_u_regional_indicator_symbol_letter_s]=$'\xF0\x9F\x87\xBA\xF0\x9F\x87\xB8'
+emoji[regional_indicator_symbol_letter_r_regional_indicator_symbol_letter_u]=$'\xF0\x9F\x87\xB7\xF0\x9F\x87\xBA'
-emoji_fruits=(
+# Nonstandard alias names
+emoji[vulcan_salute]=$'\U1F596'
+
+
+# Emoji combining and auxiliary characters
+
+# "Variation Selectors" for controlling text vs emoji style presentation
+# These apply to the immediately preceding character
+emoji2[text_style]=$'\UFE0E'
+emoji2[emoji_style]=$'\UFE0F'
+# Joiner that indicates a single combined-form glyph (ligature) should be used
+emoji2[zero_width_joiner]=$'\U200D'
+# Skin tone modifiers
+emoji2[emoji_modifier_fitzpatrick_type_1_2]=$'\U1F3FB'
+emoji2[emoji_modifier_fitzpatrick_type_3]=$'\U1F3FC'
+emoji2[emoji_modifier_fitzpatrick_type_4]=$'\U1F3FD'
+emoji2[emoji_modifier_fitzpatrick_type_5]=$'\U1F3FE'
+emoji2[emoji_modifier_fitzpatrick_type_6]=$'\U1F3FF'
+# Various other combining characters. (Incomplete list; I selected ones that sound useful)
+emoji2[combining_enclosing_circle]=$'\U20DD'
+emoji2[combining_enclosing_square]=$'\U20DE'
+emoji2[combining_enclosing_diamond]=$'\U20DF'
+emoji2[combining_enclosing_circle_backslash]=$'\U20E0'
+emoji2[combining_enclosing_screen]=$'\U20E2'
+emoji2[combining_enclosing_keycap]=$'\U20E3'
+emoji2[combining_enclosing_upward_pointing_triangle]=$'\U20E4'
+
+# Easier access to skin tone modifiers
+emoji_skintone[1_2]=$'\U1F3FB'
+emoji_skintone[3]=$'\U1F3FC'
+emoji_skintone[4]=$'\U1F3FD'
+emoji_skintone[5]=$'\U1F3FE'
+emoji_skintone[6]=$'\U1F3FF'
+
+# Emoji groups
+# These are stored in a single associative array, $emoji_groups, to avoid cluttering up the global
+# namespace, and to allow adding additional group definitions at run time.
+# The keys are the group names, and the values are whitespace-separated lists of emoji character names.
+#
+# These extra local arrays are used to allow more convenient formatting of the source code.
+
+emoji_groups[fruits]="
tomato
aubergine
grapes
@@ -886,9 +95,9 @@ emoji_fruits=(
strawberry
lemon
pear
-)
+"
-emoji_vehicles=(
+emoji_groups[vehicles]="
airplane
rocket
railway_car
@@ -927,9 +136,9 @@ emoji_vehicles=(
bicyclist
mountain_bicyclist
sailboat
-)
+"
-emoji_animals=(
+emoji_groups[animals]="
snail
snake
horse
@@ -991,9 +200,9 @@ emoji_animals=(
dog
pig
dromedary_camel
-)
+"
-emoji_faces=(
+emoji_groups[faces]="
grinning_face_with_smiling_eyes
face_with_tears_of_joy
smiling_face_with_open_mouth
@@ -1032,66 +241,49 @@ emoji_faces=(
flushed_face
dizzy_face
face_with_medical_mask
-)
+"
-function random_emoji(){
- local emoji_array_size=${#emoji[@]}
- local random_element_index=$(( ( RANDOM % $emoji_array_size ) + 1 ))
- echo ${emoji[@][$random_element_index]}
}
-function random_emoji_from_list(){
- local array_name=$1
- local list_size=${#${(P)array_name}[@]}
+# Prints a random emoji character
+#
+# random_emoji [group]
+#
+function random_emoji() {
+ local group=$1
+ local names
+ if [[ -z "$group" || "$group" == "all" ]]; then
+ names=(${(k)emoji})
+ else
+ names=(${=emoji_groups[$group_name]})
+ fi
+ local list_size=$#names
local random_index=$(( ( RANDOM % $list_size ) + 1 ))
- local key=${${(P)array_name}[@][$random_index]}
- echo ${emoji[$key]}
+ local name=${names[$random_index]}
+ echo ${emoji[$name]}
}
-function display_emoji_list(){
- local array_name=$1
- for i in ${${(P)array_name}[@]}; do
+# Displays a listing of emoji with their names
+#
+# display_emoji [group]
+#
+function display_emoji() {
+ local group=$1
+ local names
+ if [[ -z "$group" || "$group" == "all" ]]; then
+ names=(${(k)emoji})
+ else
+ names=(${=emoji_groups[$group]})
+ fi
+ # The extra spaces in output here are a hack for readability, since some
+ # terminals treat these emoji chars as single-width.
+ for i in $names; do
+ printf '%s ' "$emoji[$i]"
+ done
+ print
+ for i in $names; do
echo "${emoji[$i]} = $i"
done
}
-function random_emoji_fruit(){
- random_emoji_from_list 'emoji_fruits'
-}
-
-function random_emoji_vehicle(){
- random_emoji_from_list 'emoji_vehicles'
-}
-
-function random_emoji_animal(){
- random_emoji_from_list 'emoji_animals'
-}
-
-function random_emoji_face(){
- random_emoji_from_list 'emoji_faces'
-}
-
-function display_emoji_fruits(){
- display_emoji_list 'emoji_fruits'
-}
-
-function display_emoji_vehicles(){
- display_emoji_list 'emoji_vehicles'
-}
-
-function display_emoji_animals(){
- display_emoji_list 'emoji_animals'
-}
-
-function display_emoji_faces(){
- display_emoji_list 'emoji_faces'
-}
-
-function display_all_emoji(){
- echo $emoji[@]
- echo
- for k in ${(k)emoji}; do
- echo "${emoji[$k]} = $k"
- done
-}