Add support for emojis (#189)
Add support for emojis
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1fcb5f8..b1c50d5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.1.1
+
+* Add support for GitHub's colon-based Emoji syntax. :tada:! This is available
+ in the `gitHubWeb` extension set.
+
## 1.1.0
* Make the constructor for ExtensionSet public, for tools like dartdoc.
diff --git a/README.md b/README.md
index dcaca0d..5fbe97c 100644
--- a/README.md
+++ b/README.md
@@ -69,8 +69,9 @@
* `new InlineHtmlSyntax()`
* `const FencedCodeBlockSyntax()`
-* `ExtensionSet.gitHubWeb` includes five extensions:
+* `ExtensionSet.gitHubWeb` includes six extensions:
+ * `new EmojiSyntax()`
* `new InlineHtmlSyntax()`
* `const HeaderWithIdSyntax()`, which adds `id` attributes to ATX-style
headers, for easy intra-document linking.
diff --git a/lib/src/emojis.dart b/lib/src/emojis.dart
new file mode 100644
index 0000000..cc3e0d6
--- /dev/null
+++ b/lib/src/emojis.dart
@@ -0,0 +1,1504 @@
+// GENERATED FILE. DO NOT EDIT.
+//
+// This file was generated from emojilib's emoji data file:
+// https://github.com/muan/emojilib/raw/master/emojis.json
+// at 2017-12-30 08:59:02.241410 by the script, tool/update_emojis.dart.
+
+const emojis = const <String, String>{
+ 'grinning': '๐',
+ 'grimacing': '๐ฌ',
+ 'grin': '๐',
+ 'joy': '๐',
+ 'rofl': '๐คฃ',
+ 'smiley': '๐',
+ 'smile': '๐',
+ 'sweat_smile': '๐
',
+ 'laughing': '๐',
+ 'innocent': '๐',
+ 'wink': '๐',
+ 'blush': '๐',
+ 'slightly_smiling_face': '๐',
+ 'upside_down_face': '๐',
+ 'relaxed': 'โบ๏ธ',
+ 'yum': '๐',
+ 'relieved': '๐',
+ 'heart_eyes': '๐',
+ 'kissing_heart': '๐',
+ 'kissing': '๐',
+ 'kissing_smiling_eyes': '๐',
+ 'kissing_closed_eyes': '๐',
+ 'stuck_out_tongue_winking_eye': '๐',
+ 'zany': '๐คช',
+ 'raised_eyebrow': '๐คจ',
+ 'monocle': '๐ง',
+ 'stuck_out_tongue_closed_eyes': '๐',
+ 'stuck_out_tongue': '๐',
+ 'money_mouth_face': '๐ค',
+ 'nerd_face': '๐ค',
+ 'sunglasses': '๐',
+ 'star_struck': '๐คฉ',
+ 'clown_face': '๐คก',
+ 'cowboy_hat_face': '๐ค ',
+ 'hugs': '๐ค',
+ 'smirk': '๐',
+ 'no_mouth': '๐ถ',
+ 'neutral_face': '๐',
+ 'expressionless': '๐',
+ 'unamused': '๐',
+ 'roll_eyes': '๐',
+ 'thinking': '๐ค',
+ 'lying_face': '๐คฅ',
+ 'hand_over_mouth': '๐คญ',
+ 'shushing': '๐คซ',
+ 'symbols_over_mouth': '๐คฌ',
+ 'exploding_head': '๐คฏ',
+ 'flushed': '๐ณ',
+ 'disappointed': '๐',
+ 'worried': '๐',
+ 'angry': '๐ ',
+ 'rage': '๐ก',
+ 'pensive': '๐',
+ 'confused': '๐',
+ 'slightly_frowning_face': '๐',
+ 'frowning_face': 'โน',
+ 'persevere': '๐ฃ',
+ 'confounded': '๐',
+ 'tired_face': '๐ซ',
+ 'weary': '๐ฉ',
+ 'triumph': '๐ค',
+ 'open_mouth': '๐ฎ',
+ 'scream': '๐ฑ',
+ 'fearful': '๐จ',
+ 'cold_sweat': '๐ฐ',
+ 'hushed': '๐ฏ',
+ 'frowning': '๐ฆ',
+ 'anguished': '๐ง',
+ 'cry': '๐ข',
+ 'disappointed_relieved': '๐ฅ',
+ 'drooling_face': '๐คค',
+ 'sleepy': '๐ช',
+ 'sweat': '๐',
+ 'sob': '๐ญ',
+ 'dizzy_face': '๐ต',
+ 'astonished': '๐ฒ',
+ 'zipper_mouth_face': '๐ค',
+ 'nauseated_face': '๐คข',
+ 'sneezing_face': '๐คง',
+ 'vomiting': '๐คฎ',
+ 'mask': '๐ท',
+ 'face_with_thermometer': '๐ค',
+ 'face_with_head_bandage': '๐ค',
+ 'sleeping': '๐ด',
+ 'zzz': '๐ค',
+ 'poop': '๐ฉ',
+ 'smiling_imp': '๐',
+ 'imp': '๐ฟ',
+ 'japanese_ogre': '๐น',
+ 'japanese_goblin': '๐บ',
+ 'skull': '๐',
+ 'ghost': '๐ป',
+ 'alien': '๐ฝ',
+ 'robot': '๐ค',
+ 'smiley_cat': '๐บ',
+ 'smile_cat': '๐ธ',
+ 'joy_cat': '๐น',
+ 'heart_eyes_cat': '๐ป',
+ 'smirk_cat': '๐ผ',
+ 'kissing_cat': '๐ฝ',
+ 'scream_cat': '๐',
+ 'crying_cat_face': '๐ฟ',
+ 'pouting_cat': '๐พ',
+ 'palms_up': '๐คฒ',
+ 'raised_hands': '๐',
+ 'clap': '๐',
+ 'wave': '๐',
+ 'call_me_hand': '๐ค',
+ '+1': '๐',
+ '-1': '๐',
+ 'facepunch': '๐',
+ 'fist': 'โ',
+ 'fist_left': '๐ค',
+ 'fist_right': '๐ค',
+ 'v': 'โ',
+ 'ok_hand': '๐',
+ 'raised_hand': 'โ',
+ 'raised_back_of_hand': '๐ค',
+ 'open_hands': '๐',
+ 'muscle': '๐ช',
+ 'pray': '๐',
+ 'handshake': '๐ค',
+ 'point_up': 'โ',
+ 'point_up_2': '๐',
+ 'point_down': '๐',
+ 'point_left': '๐',
+ 'point_right': '๐',
+ 'fu': '๐',
+ 'raised_hand_with_fingers_splayed': '๐',
+ 'love_you': '๐ค',
+ 'metal': '๐ค',
+ 'crossed_fingers': '๐ค',
+ 'vulcan_salute': '๐',
+ 'writing_hand': 'โ',
+ 'selfie': '๐คณ',
+ 'nail_care': '๐
',
+ 'lips': '๐',
+ 'tongue': '๐
',
+ 'ear': '๐',
+ 'nose': '๐',
+ 'eye': '๐',
+ 'eyes': '๐',
+ 'brain': '๐ง ',
+ 'bust_in_silhouette': '๐ค',
+ 'busts_in_silhouette': '๐ฅ',
+ 'speaking_head': '๐ฃ',
+ 'baby': '๐ถ',
+ 'child': '๐ง',
+ 'boy': '๐ฆ',
+ 'girl': '๐ง',
+ 'adult': '๐ง',
+ 'man': '๐จ',
+ 'woman': '๐ฉ',
+ 'blonde_woman': '๐ฑโ๏ธ',
+ 'blonde_man': '๐ฑ',
+ 'bearded_person': '๐ง',
+ 'older_adult': '๐ง',
+ 'older_man': '๐ด',
+ 'older_woman': '๐ต',
+ 'man_with_gua_pi_mao': '๐ฒ',
+ 'woman_with_headscarf': '๐ง',
+ 'woman_with_turban': '๐ณโ๏ธ',
+ 'man_with_turban': '๐ณ',
+ 'policewoman': '๐ฎโ๏ธ',
+ 'policeman': '๐ฎ',
+ 'construction_worker_woman': '๐ทโ๏ธ',
+ 'construction_worker_man': '๐ท',
+ 'guardswoman': '๐โ๏ธ',
+ 'guardsman': '๐',
+ 'female_detective': '๐ต๏ธโ๏ธ',
+ 'male_detective': '๐ต',
+ 'woman_health_worker': '๐ฉโ๏ธ',
+ 'man_health_worker': '๐จโ๏ธ',
+ 'woman_farmer': '๐ฉ๐พ',
+ 'man_farmer': '๐จ๐พ',
+ 'woman_cook': '๐ฉ๐ณ',
+ 'man_cook': '๐จ๐ณ',
+ 'woman_student': '๐ฉ๐',
+ 'man_student': '๐จ๐',
+ 'woman_singer': '๐ฉ๐ค',
+ 'man_singer': '๐จ๐ค',
+ 'woman_teacher': '๐ฉ๐ซ',
+ 'man_teacher': '๐จ๐ซ',
+ 'woman_factory_worker': '๐ฉ๐ญ',
+ 'man_factory_worker': '๐จ๐ญ',
+ 'woman_technologist': '๐ฉ๐ป',
+ 'man_technologist': '๐จ๐ป',
+ 'woman_office_worker': '๐ฉ๐ผ',
+ 'man_office_worker': '๐จ๐ผ',
+ 'woman_mechanic': '๐ฉ๐ง',
+ 'man_mechanic': '๐จ๐ง',
+ 'woman_scientist': '๐ฉ๐ฌ',
+ 'man_scientist': '๐จ๐ฌ',
+ 'woman_artist': '๐ฉ๐จ',
+ 'man_artist': '๐จ๐จ',
+ 'woman_firefighter': '๐ฉ๐',
+ 'man_firefighter': '๐จ๐',
+ 'woman_pilot': '๐ฉโ๏ธ',
+ 'man_pilot': '๐จโ๏ธ',
+ 'woman_astronaut': '๐ฉ๐',
+ 'man_astronaut': '๐จ๐',
+ 'woman_judge': '๐ฉโ๏ธ',
+ 'man_judge': '๐จโ๏ธ',
+ 'mrs_claus': '๐คถ',
+ 'santa': '๐
',
+ 'sorceress': '๐งโ๏ธ',
+ 'wizard': '๐งโ๏ธ',
+ 'woman_elf': '๐งโ๏ธ',
+ 'man_elf': '๐งโ๏ธ',
+ 'woman_vampire': '๐งโ๏ธ',
+ 'man_vampire': '๐งโ๏ธ',
+ 'woman_zombie': '๐งโ๏ธ',
+ 'man_zombie': '๐งโ๏ธ',
+ 'woman_genie': '๐งโ๏ธ',
+ 'man_genie': '๐งโ๏ธ',
+ 'mermaid': '๐งโ๏ธ',
+ 'merman': '๐งโ๏ธ',
+ 'woman_fairy': '๐งโ๏ธ',
+ 'man_fairy': '๐งโ๏ธ',
+ 'angel': '๐ผ',
+ 'pregnant_woman': '๐คฐ',
+ 'breastfeeding': '๐คฑ',
+ 'princess': '๐ธ',
+ 'prince': '๐คด',
+ 'bride_with_veil': '๐ฐ',
+ 'man_in_tuxedo': '๐คต',
+ 'running_woman': '๐โ๏ธ',
+ 'running_man': '๐',
+ 'walking_woman': '๐ถโ๏ธ',
+ 'walking_man': '๐ถ',
+ 'dancer': '๐',
+ 'man_dancing': '๐บ',
+ 'dancing_women': '๐ฏ',
+ 'dancing_men': '๐ฏโ๏ธ',
+ 'couple': '๐ซ',
+ 'two_men_holding_hands': '๐ฌ',
+ 'two_women_holding_hands': '๐ญ',
+ 'bowing_woman': '๐โ๏ธ',
+ 'bowing_man': '๐',
+ 'man_facepalming': '๐คฆ',
+ 'woman_facepalming': '๐คฆโ๏ธ',
+ 'woman_shrugging': '๐คท',
+ 'man_shrugging': '๐คทโ๏ธ',
+ 'tipping_hand_woman': '๐',
+ 'tipping_hand_man': '๐โ๏ธ',
+ 'no_good_woman': '๐
',
+ 'no_good_man': '๐
โ๏ธ',
+ 'ok_woman': '๐',
+ 'ok_man': '๐โ๏ธ',
+ 'raising_hand_woman': '๐',
+ 'raising_hand_man': '๐โ๏ธ',
+ 'pouting_woman': '๐',
+ 'pouting_man': '๐โ๏ธ',
+ 'frowning_woman': '๐',
+ 'frowning_man': '๐โ๏ธ',
+ 'haircut_woman': '๐',
+ 'haircut_man': '๐โ๏ธ',
+ 'massage_woman': '๐',
+ 'massage_man': '๐โ๏ธ',
+ 'woman_in_steamy_room': '๐งโ๏ธ',
+ 'man_in_steamy_room': '๐งโ๏ธ',
+ 'couple_with_heart_woman_man': '๐',
+ 'couple_with_heart_woman_woman': '๐ฉโค๏ธ๐ฉ',
+ 'couple_with_heart_man_man': '๐จโค๏ธ๐จ',
+ 'couplekiss_man_woman': '๐',
+ 'couplekiss_woman_woman': '๐ฉโค๏ธ๐๐ฉ',
+ 'couplekiss_man_man': '๐จโค๏ธ๐๐จ',
+ 'family_man_woman_boy': '๐ช',
+ 'family_man_woman_girl': '๐จ๐ฉ๐ง',
+ 'family_man_woman_girl_boy': '๐จ๐ฉ๐ง๐ฆ',
+ 'family_man_woman_boy_boy': '๐จ๐ฉ๐ฆ๐ฆ',
+ 'family_man_woman_girl_girl': '๐จ๐ฉ๐ง๐ง',
+ 'family_woman_woman_boy': '๐ฉ๐ฉ๐ฆ',
+ 'family_woman_woman_girl': '๐ฉ๐ฉ๐ง',
+ 'family_woman_woman_girl_boy': '๐ฉ๐ฉ๐ง๐ฆ',
+ 'family_woman_woman_boy_boy': '๐ฉ๐ฉ๐ฆ๐ฆ',
+ 'family_woman_woman_girl_girl': '๐ฉ๐ฉ๐ง๐ง',
+ 'family_man_man_boy': '๐จ๐จ๐ฆ',
+ 'family_man_man_girl': '๐จ๐จ๐ง',
+ 'family_man_man_girl_boy': '๐จ๐จ๐ง๐ฆ',
+ 'family_man_man_boy_boy': '๐จ๐จ๐ฆ๐ฆ',
+ 'family_man_man_girl_girl': '๐จ๐จ๐ง๐ง',
+ 'family_woman_boy': '๐ฉ๐ฆ',
+ 'family_woman_girl': '๐ฉ๐ง',
+ 'family_woman_girl_boy': '๐ฉ๐ง๐ฆ',
+ 'family_woman_boy_boy': '๐ฉ๐ฆ๐ฆ',
+ 'family_woman_girl_girl': '๐ฉ๐ง๐ง',
+ 'family_man_boy': '๐จ๐ฆ',
+ 'family_man_girl': '๐จ๐ง',
+ 'family_man_girl_boy': '๐จ๐ง๐ฆ',
+ 'family_man_boy_boy': '๐จ๐ฆ๐ฆ',
+ 'family_man_girl_girl': '๐จ๐ง๐ง',
+ 'coat': '๐งฅ',
+ 'womans_clothes': '๐',
+ 'tshirt': '๐',
+ 'jeans': '๐',
+ 'necktie': '๐',
+ 'dress': '๐',
+ 'bikini': '๐',
+ 'kimono': '๐',
+ 'lipstick': '๐',
+ 'kiss': '๐',
+ 'footprints': '๐ฃ',
+ 'high_heel': '๐ ',
+ 'sandal': '๐ก',
+ 'boot': '๐ข',
+ 'mans_shoe': '๐',
+ 'athletic_shoe': '๐',
+ 'socks': '๐งฆ',
+ 'gloves': '๐งค',
+ 'scarf': '๐งฃ',
+ 'womans_hat': '๐',
+ 'tophat': '๐ฉ',
+ 'billed_hat': '๐งข',
+ 'rescue_worker_helmet': 'โ',
+ 'mortar_board': '๐',
+ 'crown': '๐',
+ 'school_satchel': '๐',
+ 'pouch': '๐',
+ 'purse': '๐',
+ 'handbag': '๐',
+ 'briefcase': '๐ผ',
+ 'eyeglasses': '๐',
+ 'dark_sunglasses': '๐ถ',
+ 'ring': '๐',
+ 'closed_umbrella': '๐',
+ 'dog': '๐ถ',
+ 'cat': '๐ฑ',
+ 'mouse': '๐ญ',
+ 'hamster': '๐น',
+ 'rabbit': '๐ฐ',
+ 'fox_face': '๐ฆ',
+ 'bear': '๐ป',
+ 'panda_face': '๐ผ',
+ 'koala': '๐จ',
+ 'tiger': '๐ฏ',
+ 'lion': '๐ฆ',
+ 'cow': '๐ฎ',
+ 'pig': '๐ท',
+ 'pig_nose': '๐ฝ',
+ 'frog': '๐ธ',
+ 'squid': '๐ฆ',
+ 'octopus': '๐',
+ 'shrimp': '๐ฆ',
+ 'monkey_face': '๐ต',
+ 'gorilla': '๐ฆ',
+ 'see_no_evil': '๐',
+ 'hear_no_evil': '๐',
+ 'speak_no_evil': '๐',
+ 'monkey': '๐',
+ 'chicken': '๐',
+ 'penguin': '๐ง',
+ 'bird': '๐ฆ',
+ 'baby_chick': '๐ค',
+ 'hatching_chick': '๐ฃ',
+ 'hatched_chick': '๐ฅ',
+ 'duck': '๐ฆ',
+ 'eagle': '๐ฆ
',
+ 'owl': '๐ฆ',
+ 'bat': '๐ฆ',
+ 'wolf': '๐บ',
+ 'boar': '๐',
+ 'horse': '๐ด',
+ 'unicorn': '๐ฆ',
+ 'honeybee': '๐',
+ 'bug': '๐',
+ 'butterfly': '๐ฆ',
+ 'snail': '๐',
+ 'beetle': '๐',
+ 'ant': '๐',
+ 'grasshopper': '๐ฆ',
+ 'spider': '๐ท',
+ 'scorpion': '๐ฆ',
+ 'crab': '๐ฆ',
+ 'snake': '๐',
+ 'lizard': '๐ฆ',
+ 't-rex': '๐ฆ',
+ 'sauropod': '๐ฆ',
+ 'turtle': '๐ข',
+ 'tropical_fish': '๐ ',
+ 'fish': '๐',
+ 'blowfish': '๐ก',
+ 'dolphin': '๐ฌ',
+ 'shark': '๐ฆ',
+ 'whale': '๐ณ',
+ 'whale2': '๐',
+ 'crocodile': '๐',
+ 'leopard': '๐',
+ 'zebra': '๐ฆ',
+ 'tiger2': '๐
',
+ 'water_buffalo': '๐',
+ 'ox': '๐',
+ 'cow2': '๐',
+ 'deer': '๐ฆ',
+ 'dromedary_camel': '๐ช',
+ 'camel': '๐ซ',
+ 'giraffe': '๐ฆ',
+ 'elephant': '๐',
+ 'rhinoceros': '๐ฆ',
+ 'goat': '๐',
+ 'ram': '๐',
+ 'sheep': '๐',
+ 'racehorse': '๐',
+ 'pig2': '๐',
+ 'rat': '๐',
+ 'mouse2': '๐',
+ 'rooster': '๐',
+ 'turkey': '๐ฆ',
+ 'dove': '๐',
+ 'dog2': '๐',
+ 'poodle': '๐ฉ',
+ 'cat2': '๐',
+ 'rabbit2': '๐',
+ 'chipmunk': '๐ฟ',
+ 'hedgehog': '๐ฆ',
+ 'paw_prints': '๐พ',
+ 'dragon': '๐',
+ 'dragon_face': '๐ฒ',
+ 'cactus': '๐ต',
+ 'christmas_tree': '๐',
+ 'evergreen_tree': '๐ฒ',
+ 'deciduous_tree': '๐ณ',
+ 'palm_tree': '๐ด',
+ 'seedling': '๐ฑ',
+ 'herb': '๐ฟ',
+ 'shamrock': 'โ',
+ 'four_leaf_clover': '๐',
+ 'bamboo': '๐',
+ 'tanabata_tree': '๐',
+ 'leaves': '๐',
+ 'fallen_leaf': '๐',
+ 'maple_leaf': '๐',
+ 'ear_of_rice': '๐พ',
+ 'hibiscus': '๐บ',
+ 'sunflower': '๐ป',
+ 'rose': '๐น',
+ 'wilted_flower': '๐ฅ',
+ 'tulip': '๐ท',
+ 'blossom': '๐ผ',
+ 'cherry_blossom': '๐ธ',
+ 'bouquet': '๐',
+ 'mushroom': '๐',
+ 'chestnut': '๐ฐ',
+ 'jack_o_lantern': '๐',
+ 'shell': '๐',
+ 'spider_web': '๐ธ',
+ 'earth_americas': '๐',
+ 'earth_africa': '๐',
+ 'earth_asia': '๐',
+ 'full_moon': '๐',
+ 'waning_gibbous_moon': '๐',
+ 'last_quarter_moon': '๐',
+ 'waning_crescent_moon': '๐',
+ 'new_moon': '๐',
+ 'waxing_crescent_moon': '๐',
+ 'first_quarter_moon': '๐',
+ 'waxing_gibbous_moon': '๐',
+ 'new_moon_with_face': '๐',
+ 'full_moon_with_face': '๐',
+ 'first_quarter_moon_with_face': '๐',
+ 'last_quarter_moon_with_face': '๐',
+ 'sun_with_face': '๐',
+ 'crescent_moon': '๐',
+ 'star': 'โญ',
+ 'star2': '๐',
+ 'dizzy': '๐ซ',
+ 'sparkles': 'โจ',
+ 'comet': 'โ',
+ 'sunny': 'โ๏ธ',
+ 'sun_behind_small_cloud': '๐ค',
+ 'partly_sunny': 'โ
',
+ 'sun_behind_large_cloud': '๐ฅ',
+ 'sun_behind_rain_cloud': '๐ฆ',
+ 'cloud': 'โ๏ธ',
+ 'cloud_with_rain': '๐ง',
+ 'cloud_with_lightning_and_rain': 'โ',
+ 'cloud_with_lightning': '๐ฉ',
+ 'zap': 'โก',
+ 'fire': '๐ฅ',
+ 'boom': '๐ฅ',
+ 'snowflake': 'โ๏ธ',
+ 'cloud_with_snow': '๐จ',
+ 'snowman': 'โ',
+ 'snowman_with_snow': 'โ',
+ 'wind_face': '๐ฌ',
+ 'dash': '๐จ',
+ 'tornado': '๐ช',
+ 'fog': '๐ซ',
+ 'open_umbrella': 'โ',
+ 'umbrella': 'โ',
+ 'droplet': '๐ง',
+ 'sweat_drops': '๐ฆ',
+ 'ocean': '๐',
+ 'green_apple': '๐',
+ 'apple': '๐',
+ 'pear': '๐',
+ 'tangerine': '๐',
+ 'lemon': '๐',
+ 'banana': '๐',
+ 'watermelon': '๐',
+ 'grapes': '๐',
+ 'strawberry': '๐',
+ 'melon': '๐',
+ 'cherries': '๐',
+ 'peach': '๐',
+ 'pineapple': '๐',
+ 'coconut': '๐ฅฅ',
+ 'kiwi_fruit': '๐ฅ',
+ 'avocado': '๐ฅ',
+ 'broccoli': '๐ฅฆ',
+ 'tomato': '๐
',
+ 'eggplant': '๐',
+ 'cucumber': '๐ฅ',
+ 'carrot': '๐ฅ',
+ 'hot_pepper': '๐ถ',
+ 'potato': '๐ฅ',
+ 'corn': '๐ฝ',
+ 'sweet_potato': '๐ ',
+ 'peanuts': '๐ฅ',
+ 'honey_pot': '๐ฏ',
+ 'croissant': '๐ฅ',
+ 'bread': '๐',
+ 'baguette_bread': '๐ฅ',
+ 'pretzel': '๐ฅจ',
+ 'cheese': '๐ง',
+ 'egg': '๐ฅ',
+ 'bacon': '๐ฅ',
+ 'steak': '๐ฅฉ',
+ 'pancakes': '๐ฅ',
+ 'poultry_leg': '๐',
+ 'meat_on_bone': '๐',
+ 'fried_shrimp': '๐ค',
+ 'fried_egg': '๐ณ',
+ 'hamburger': '๐',
+ 'fries': '๐',
+ 'stuffed_flatbread': '๐ฅ',
+ 'hotdog': '๐ญ',
+ 'pizza': '๐',
+ 'sandwich': '๐ฅช',
+ 'canned_food': '๐ฅซ',
+ 'spaghetti': '๐',
+ 'taco': '๐ฎ',
+ 'burrito': '๐ฏ',
+ 'green_salad': '๐ฅ',
+ 'shallow_pan_of_food': '๐ฅ',
+ 'ramen': '๐',
+ 'stew': '๐ฒ',
+ 'fish_cake': '๐ฅ',
+ 'fortune_cookie': '๐ฅ ',
+ 'sushi': '๐ฃ',
+ 'bento': '๐ฑ',
+ 'curry': '๐',
+ 'rice_ball': '๐',
+ 'rice': '๐',
+ 'rice_cracker': '๐',
+ 'oden': '๐ข',
+ 'dango': '๐ก',
+ 'shaved_ice': '๐ง',
+ 'ice_cream': '๐จ',
+ 'icecream': '๐ฆ',
+ 'pie': '๐ฅง',
+ 'cake': '๐ฐ',
+ 'birthday': '๐',
+ 'custard': '๐ฎ',
+ 'candy': '๐ฌ',
+ 'lollipop': '๐ญ',
+ 'chocolate_bar': '๐ซ',
+ 'popcorn': '๐ฟ',
+ 'dumpling': '๐ฅ',
+ 'doughnut': '๐ฉ',
+ 'cookie': '๐ช',
+ 'milk_glass': '๐ฅ',
+ 'beer': '๐บ',
+ 'beers': '๐ป',
+ 'clinking_glasses': '๐ฅ',
+ 'wine_glass': '๐ท',
+ 'tumbler_glass': '๐ฅ',
+ 'cocktail': '๐ธ',
+ 'tropical_drink': '๐น',
+ 'champagne': '๐พ',
+ 'sake': '๐ถ',
+ 'tea': '๐ต',
+ 'cup_with_straw': '๐ฅค',
+ 'coffee': 'โ',
+ 'baby_bottle': '๐ผ',
+ 'spoon': '๐ฅ',
+ 'fork_and_knife': '๐ด',
+ 'plate_with_cutlery': '๐ฝ',
+ 'bowl_with_spoon': '๐ฅฃ',
+ 'takeout_box': '๐ฅก',
+ 'chopsticks': '๐ฅข',
+ 'soccer': 'โฝ',
+ 'basketball': '๐',
+ 'football': '๐',
+ 'baseball': 'โพ',
+ 'tennis': '๐พ',
+ 'volleyball': '๐',
+ 'rugby_football': '๐',
+ '8ball': '๐ฑ',
+ 'golf': 'โณ',
+ 'golfing_woman': '๐๏ธโ๏ธ',
+ 'golfing_man': '๐',
+ 'ping_pong': '๐',
+ 'badminton': '๐ธ',
+ 'goal_net': '๐ฅ
',
+ 'ice_hockey': '๐',
+ 'field_hockey': '๐',
+ 'cricket': '๐',
+ 'ski': '๐ฟ',
+ 'skier': 'โท',
+ 'snowboarder': '๐',
+ 'person_fencing': '๐คบ',
+ 'women_wrestling': '๐คผโ๏ธ',
+ 'men_wrestling': '๐คผโ๏ธ',
+ 'woman_cartwheeling': '๐คธโ๏ธ',
+ 'man_cartwheeling': '๐คธโ๏ธ',
+ 'woman_playing_handball': '๐คพโ๏ธ',
+ 'man_playing_handball': '๐คพโ๏ธ',
+ 'ice_skate': 'โธ',
+ 'bow_and_arrow': '๐น',
+ 'fishing_pole_and_fish': '๐ฃ',
+ 'boxing_glove': '๐ฅ',
+ 'martial_arts_uniform': '๐ฅ',
+ 'rowing_woman': '๐ฃโ๏ธ',
+ 'rowing_man': '๐ฃ',
+ 'climbing_woman': '๐งโ๏ธ',
+ 'climbing_man': '๐งโ๏ธ',
+ 'swimming_woman': '๐โ๏ธ',
+ 'swimming_man': '๐',
+ 'woman_playing_water_polo': '๐คฝโ๏ธ',
+ 'man_playing_water_polo': '๐คฝโ๏ธ',
+ 'woman_in_lotus_position': '๐งโ๏ธ',
+ 'man_in_lotus_position': '๐งโ๏ธ',
+ 'surfing_woman': '๐โ๏ธ',
+ 'surfing_man': '๐',
+ 'bath': '๐',
+ 'basketball_woman': 'โน๏ธโ๏ธ',
+ 'basketball_man': 'โน',
+ 'weight_lifting_woman': '๐๏ธโ๏ธ',
+ 'weight_lifting_man': '๐',
+ 'biking_woman': '๐ดโ๏ธ',
+ 'biking_man': '๐ด',
+ 'mountain_biking_woman': '๐ตโ๏ธ',
+ 'mountain_biking_man': '๐ต',
+ 'horse_racing': '๐',
+ 'business_suit_levitating': '๐ด',
+ 'trophy': '๐',
+ 'running_shirt_with_sash': '๐ฝ',
+ 'medal_sports': '๐
',
+ 'medal_military': '๐',
+ '1st_place_medal': '๐ฅ',
+ '2nd_place_medal': '๐ฅ',
+ '3rd_place_medal': '๐ฅ',
+ 'reminder_ribbon': '๐',
+ 'rosette': '๐ต',
+ 'ticket': '๐ซ',
+ 'tickets': '๐',
+ 'performing_arts': '๐ญ',
+ 'art': '๐จ',
+ 'circus_tent': '๐ช',
+ 'woman_juggling': '๐คนโ๏ธ',
+ 'man_juggling': '๐คนโ๏ธ',
+ 'microphone': '๐ค',
+ 'headphones': '๐ง',
+ 'musical_score': '๐ผ',
+ 'musical_keyboard': '๐น',
+ 'drum': '๐ฅ',
+ 'saxophone': '๐ท',
+ 'trumpet': '๐บ',
+ 'guitar': '๐ธ',
+ 'violin': '๐ป',
+ 'clapper': '๐ฌ',
+ 'video_game': '๐ฎ',
+ 'space_invader': '๐พ',
+ 'dart': '๐ฏ',
+ 'game_die': '๐ฒ',
+ 'slot_machine': '๐ฐ',
+ 'bowling': '๐ณ',
+ 'red_car': '๐',
+ 'taxi': '๐',
+ 'blue_car': '๐',
+ 'bus': '๐',
+ 'trolleybus': '๐',
+ 'racing_car': '๐',
+ 'police_car': '๐',
+ 'ambulance': '๐',
+ 'fire_engine': '๐',
+ 'minibus': '๐',
+ 'truck': '๐',
+ 'articulated_lorry': '๐',
+ 'tractor': '๐',
+ 'kick_scooter': '๐ด',
+ 'motorcycle': '๐',
+ 'bike': '๐ฒ',
+ 'motor_scooter': '๐ต',
+ 'rotating_light': '๐จ',
+ 'oncoming_police_car': '๐',
+ 'oncoming_bus': '๐',
+ 'oncoming_automobile': '๐',
+ 'oncoming_taxi': '๐',
+ 'aerial_tramway': '๐ก',
+ 'mountain_cableway': '๐ ',
+ 'suspension_railway': '๐',
+ 'railway_car': '๐',
+ 'train': '๐',
+ 'monorail': '๐',
+ 'bullettrain_side': '๐',
+ 'bullettrain_front': '๐
',
+ 'light_rail': '๐',
+ 'mountain_railway': '๐',
+ 'steam_locomotive': '๐',
+ 'train2': '๐',
+ 'metro': '๐',
+ 'tram': '๐',
+ 'station': '๐',
+ 'helicopter': '๐',
+ 'small_airplane': '๐ฉ',
+ 'airplane': 'โ๏ธ',
+ 'flight_departure': '๐ซ',
+ 'flight_arrival': '๐ฌ',
+ 'sailboat': 'โต',
+ 'motor_boat': '๐ฅ',
+ 'speedboat': '๐ค',
+ 'ferry': 'โด',
+ 'passenger_ship': '๐ณ',
+ 'rocket': '๐',
+ 'artificial_satellite': '๐ฐ',
+ 'seat': '๐บ',
+ 'canoe': '๐ถ',
+ 'anchor': 'โ',
+ 'construction': '๐ง',
+ 'fuelpump': 'โฝ',
+ 'busstop': '๐',
+ 'vertical_traffic_light': '๐ฆ',
+ 'traffic_light': '๐ฅ',
+ 'checkered_flag': '๐',
+ 'ship': '๐ข',
+ 'ferris_wheel': '๐ก',
+ 'roller_coaster': '๐ข',
+ 'carousel_horse': '๐ ',
+ 'building_construction': '๐',
+ 'foggy': '๐',
+ 'tokyo_tower': '๐ผ',
+ 'factory': '๐ญ',
+ 'fountain': 'โฒ',
+ 'rice_scene': '๐',
+ 'mountain': 'โฐ',
+ 'mountain_snow': '๐',
+ 'mount_fuji': '๐ป',
+ 'volcano': '๐',
+ 'japan': '๐พ',
+ 'camping': '๐',
+ 'tent': 'โบ',
+ 'national_park': '๐',
+ 'motorway': '๐ฃ',
+ 'railway_track': '๐ค',
+ 'sunrise': '๐
',
+ 'sunrise_over_mountains': '๐',
+ 'desert': '๐',
+ 'beach_umbrella': '๐',
+ 'desert_island': '๐',
+ 'city_sunrise': '๐',
+ 'city_sunset': '๐',
+ 'cityscape': '๐',
+ 'night_with_stars': '๐',
+ 'bridge_at_night': '๐',
+ 'milky_way': '๐',
+ 'stars': '๐ ',
+ 'sparkler': '๐',
+ 'fireworks': '๐',
+ 'rainbow': '๐',
+ 'houses': '๐',
+ 'european_castle': '๐ฐ',
+ 'japanese_castle': '๐ฏ',
+ 'stadium': '๐',
+ 'statue_of_liberty': '๐ฝ',
+ 'house': '๐ ',
+ 'house_with_garden': '๐ก',
+ 'derelict_house': '๐',
+ 'office': '๐ข',
+ 'department_store': '๐ฌ',
+ 'post_office': '๐ฃ',
+ 'european_post_office': '๐ค',
+ 'hospital': '๐ฅ',
+ 'bank': '๐ฆ',
+ 'hotel': '๐จ',
+ 'convenience_store': '๐ช',
+ 'school': '๐ซ',
+ 'love_hotel': '๐ฉ',
+ 'wedding': '๐',
+ 'classical_building': '๐',
+ 'church': 'โช',
+ 'mosque': '๐',
+ 'synagogue': '๐',
+ 'kaaba': '๐',
+ 'shinto_shrine': 'โฉ',
+ 'watch': 'โ',
+ 'iphone': '๐ฑ',
+ 'calling': '๐ฒ',
+ 'computer': '๐ป',
+ 'keyboard': 'โจ',
+ 'desktop_computer': '๐ฅ',
+ 'printer': '๐จ',
+ 'computer_mouse': '๐ฑ',
+ 'trackball': '๐ฒ',
+ 'joystick': '๐น',
+ 'clamp': '๐',
+ 'minidisc': '๐ฝ',
+ 'floppy_disk': '๐พ',
+ 'cd': '๐ฟ',
+ 'dvd': '๐',
+ 'vhs': '๐ผ',
+ 'camera': '๐ท',
+ 'camera_flash': '๐ธ',
+ 'video_camera': '๐น',
+ 'movie_camera': '๐ฅ',
+ 'film_projector': '๐ฝ',
+ 'film_strip': '๐',
+ 'telephone_receiver': '๐',
+ 'phone': 'โ๏ธ',
+ 'pager': '๐',
+ 'fax': '๐ ',
+ 'tv': '๐บ',
+ 'radio': '๐ป',
+ 'studio_microphone': '๐',
+ 'level_slider': '๐',
+ 'control_knobs': '๐',
+ 'stopwatch': 'โฑ',
+ 'timer_clock': 'โฒ',
+ 'alarm_clock': 'โฐ',
+ 'mantelpiece_clock': '๐ฐ',
+ 'hourglass_flowing_sand': 'โณ',
+ 'hourglass': 'โ',
+ 'satellite': '๐ก',
+ 'battery': '๐',
+ 'electric_plug': '๐',
+ 'bulb': '๐ก',
+ 'flashlight': '๐ฆ',
+ 'candle': '๐ฏ',
+ 'wastebasket': '๐',
+ 'oil_drum': '๐ข',
+ 'money_with_wings': '๐ธ',
+ 'dollar': '๐ต',
+ 'yen': '๐ด',
+ 'euro': '๐ถ',
+ 'pound': '๐ท',
+ 'moneybag': '๐ฐ',
+ 'credit_card': '๐ณ',
+ 'gem': '๐',
+ 'balance_scale': 'โ',
+ 'wrench': '๐ง',
+ 'hammer': '๐จ',
+ 'hammer_and_pick': 'โ',
+ 'hammer_and_wrench': '๐ ',
+ 'pick': 'โ',
+ 'nut_and_bolt': '๐ฉ',
+ 'gear': 'โ',
+ 'chains': 'โ',
+ 'gun': '๐ซ',
+ 'bomb': '๐ฃ',
+ 'hocho': '๐ช',
+ 'dagger': '๐ก',
+ 'crossed_swords': 'โ',
+ 'shield': '๐ก',
+ 'smoking': '๐ฌ',
+ 'skull_and_crossbones': 'โ ',
+ 'coffin': 'โฐ',
+ 'funeral_urn': 'โฑ',
+ 'amphora': '๐บ',
+ 'crystal_ball': '๐ฎ',
+ 'prayer_beads': '๐ฟ',
+ 'barber': '๐',
+ 'alembic': 'โ',
+ 'telescope': '๐ญ',
+ 'microscope': '๐ฌ',
+ 'hole': '๐ณ',
+ 'pill': '๐',
+ 'syringe': '๐',
+ 'thermometer': '๐ก',
+ 'label': '๐ท',
+ 'bookmark': '๐',
+ 'toilet': '๐ฝ',
+ 'shower': '๐ฟ',
+ 'bathtub': '๐',
+ 'key': '๐',
+ 'old_key': '๐',
+ 'couch_and_lamp': '๐',
+ 'sleeping_bed': '๐',
+ 'bed': '๐',
+ 'door': '๐ช',
+ 'bellhop_bell': '๐',
+ 'framed_picture': '๐ผ',
+ 'world_map': '๐บ',
+ 'parasol_on_ground': 'โฑ',
+ 'moyai': '๐ฟ',
+ 'shopping': '๐',
+ 'shopping_cart': '๐',
+ 'balloon': '๐',
+ 'flags': '๐',
+ 'ribbon': '๐',
+ 'gift': '๐',
+ 'confetti_ball': '๐',
+ 'tada': '๐',
+ 'dolls': '๐',
+ 'wind_chime': '๐',
+ 'crossed_flags': '๐',
+ 'izakaya_lantern': '๐ฎ',
+ 'email': 'โ๏ธ',
+ 'envelope_with_arrow': '๐ฉ',
+ 'incoming_envelope': '๐จ',
+ 'e-mail': '๐ง',
+ 'love_letter': '๐',
+ 'postbox': '๐ฎ',
+ 'mailbox_closed': '๐ช',
+ 'mailbox': '๐ซ',
+ 'mailbox_with_mail': '๐ฌ',
+ 'mailbox_with_no_mail': '๐ญ',
+ 'package': '๐ฆ',
+ 'postal_horn': '๐ฏ',
+ 'inbox_tray': '๐ฅ',
+ 'outbox_tray': '๐ค',
+ 'scroll': '๐',
+ 'page_with_curl': '๐',
+ 'bookmark_tabs': '๐',
+ 'bar_chart': '๐',
+ 'chart_with_upwards_trend': '๐',
+ 'chart_with_downwards_trend': '๐',
+ 'page_facing_up': '๐',
+ 'date': '๐
',
+ 'calendar': '๐',
+ 'spiral_calendar': '๐',
+ 'card_index': '๐',
+ 'card_file_box': '๐',
+ 'ballot_box': '๐ณ',
+ 'file_cabinet': '๐',
+ 'clipboard': '๐',
+ 'spiral_notepad': '๐',
+ 'file_folder': '๐',
+ 'open_file_folder': '๐',
+ 'card_index_dividers': '๐',
+ 'newspaper_roll': '๐',
+ 'newspaper': '๐ฐ',
+ 'notebook': '๐',
+ 'closed_book': '๐',
+ 'green_book': '๐',
+ 'blue_book': '๐',
+ 'orange_book': '๐',
+ 'notebook_with_decorative_cover': '๐',
+ 'ledger': '๐',
+ 'books': '๐',
+ 'open_book': '๐',
+ 'link': '๐',
+ 'paperclip': '๐',
+ 'paperclips': '๐',
+ 'scissors': 'โ๏ธ',
+ 'triangular_ruler': '๐',
+ 'straight_ruler': '๐',
+ 'pushpin': '๐',
+ 'round_pushpin': '๐',
+ 'triangular_flag_on_post': '๐ฉ',
+ 'white_flag': '๐ณ',
+ 'black_flag': '๐ด',
+ 'rainbow_flag': '๐ณ๏ธ๐',
+ 'closed_lock_with_key': '๐',
+ 'lock': '๐',
+ 'unlock': '๐',
+ 'lock_with_ink_pen': '๐',
+ 'pen': '๐',
+ 'fountain_pen': '๐',
+ 'black_nib': 'โ๏ธ',
+ 'memo': '๐',
+ 'pencil2': 'โ๏ธ',
+ 'crayon': '๐',
+ 'paintbrush': '๐',
+ 'mag': '๐',
+ 'mag_right': '๐',
+ 'heart': 'โค๏ธ',
+ 'orange_heart': '๐งก',
+ 'yellow_heart': '๐',
+ 'green_heart': '๐',
+ 'blue_heart': '๐',
+ 'purple_heart': '๐',
+ 'black_heart': '๐ค',
+ 'broken_heart': '๐',
+ 'heavy_heart_exclamation': 'โฃ',
+ 'two_hearts': '๐',
+ 'revolving_hearts': '๐',
+ 'heartbeat': '๐',
+ 'heartpulse': '๐',
+ 'sparkling_heart': '๐',
+ 'cupid': '๐',
+ 'gift_heart': '๐',
+ 'heart_decoration': '๐',
+ 'peace_symbol': 'โฎ',
+ 'latin_cross': 'โ',
+ 'star_and_crescent': 'โช',
+ 'om': '๐',
+ 'wheel_of_dharma': 'โธ',
+ 'star_of_david': 'โก',
+ 'six_pointed_star': '๐ฏ',
+ 'menorah': '๐',
+ 'yin_yang': 'โฏ',
+ 'orthodox_cross': 'โฆ',
+ 'place_of_worship': '๐',
+ 'ophiuchus': 'โ',
+ 'aries': 'โ',
+ 'taurus': 'โ',
+ 'gemini': 'โ',
+ 'cancer': 'โ',
+ 'leo': 'โ',
+ 'virgo': 'โ',
+ 'libra': 'โ',
+ 'scorpius': 'โ',
+ 'sagittarius': 'โ',
+ 'capricorn': 'โ',
+ 'aquarius': 'โ',
+ 'pisces': 'โ',
+ 'id': '๐',
+ 'atom_symbol': 'โ',
+ 'u7a7a': '๐ณ',
+ 'u5272': '๐น',
+ 'radioactive': 'โข',
+ 'biohazard': 'โฃ',
+ 'mobile_phone_off': '๐ด',
+ 'vibration_mode': '๐ณ',
+ 'u6709': '๐ถ',
+ 'u7121': '๐',
+ 'u7533': '๐ธ',
+ 'u55b6': '๐บ',
+ 'u6708': '๐ท๏ธ',
+ 'eight_pointed_black_star': 'โด๏ธ',
+ 'vs': '๐',
+ 'accept': '๐',
+ 'white_flower': '๐ฎ',
+ 'ideograph_advantage': '๐',
+ 'secret': 'ใ๏ธ',
+ 'congratulations': 'ใ๏ธ',
+ 'u5408': '๐ด',
+ 'u6e80': '๐ต',
+ 'u7981': '๐ฒ',
+ 'a': '๐
ฐ๏ธ',
+ 'b': '๐
ฑ๏ธ',
+ 'ab': '๐',
+ 'cl': '๐',
+ 'o2': '๐
พ๏ธ',
+ 'sos': '๐',
+ 'no_entry': 'โ',
+ 'name_badge': '๐',
+ 'no_entry_sign': '๐ซ',
+ 'x': 'โ',
+ 'o': 'โญ',
+ 'stop_sign': '๐',
+ 'anger': '๐ข',
+ 'hotsprings': 'โจ๏ธ',
+ 'no_pedestrians': '๐ท',
+ 'do_not_litter': '๐ฏ',
+ 'no_bicycles': '๐ณ',
+ 'non-potable_water': '๐ฑ',
+ 'underage': '๐',
+ 'no_mobile_phones': '๐ต',
+ 'exclamation': 'โ',
+ 'grey_exclamation': 'โ',
+ 'question': 'โ',
+ 'grey_question': 'โ',
+ 'bangbang': 'โผ๏ธ',
+ 'interrobang': 'โ๏ธ',
+ '100': '๐ฏ',
+ 'low_brightness': '๐
',
+ 'high_brightness': '๐',
+ 'trident': '๐ฑ',
+ 'fleur_de_lis': 'โ',
+ 'part_alternation_mark': 'ใฝ๏ธ',
+ 'warning': 'โ ๏ธ',
+ 'children_crossing': '๐ธ',
+ 'beginner': '๐ฐ',
+ 'recycle': 'โป๏ธ',
+ 'u6307': '๐ฏ',
+ 'chart': '๐น',
+ 'sparkle': 'โ๏ธ',
+ 'eight_spoked_asterisk': 'โณ๏ธ',
+ 'negative_squared_cross_mark': 'โ',
+ 'white_check_mark': 'โ
',
+ 'diamond_shape_with_a_dot_inside': '๐ ',
+ 'cyclone': '๐',
+ 'loop': 'โฟ',
+ 'globe_with_meridians': '๐',
+ 'm': 'โ๏ธ',
+ 'atm': '๐ง',
+ 'sa': '๐๏ธ',
+ 'passport_control': '๐',
+ 'customs': '๐',
+ 'baggage_claim': '๐',
+ 'left_luggage': '๐
',
+ 'wheelchair': 'โฟ',
+ 'no_smoking': '๐ญ',
+ 'wc': '๐พ',
+ 'parking': '๐
ฟ๏ธ',
+ 'potable_water': '๐ฐ',
+ 'mens': '๐น',
+ 'womens': '๐บ',
+ 'baby_symbol': '๐ผ',
+ 'restroom': '๐ป',
+ 'put_litter_in_its_place': '๐ฎ',
+ 'cinema': '๐ฆ',
+ 'signal_strength': '๐ถ',
+ 'koko': '๐',
+ 'ng': '๐',
+ 'ok': '๐',
+ 'up': '๐',
+ 'cool': '๐',
+ 'new': '๐',
+ 'free': '๐',
+ 'zero': '0๏ธโฃ',
+ 'one': '1๏ธโฃ',
+ 'two': '2๏ธโฃ',
+ 'three': '3๏ธโฃ',
+ 'four': '4๏ธโฃ',
+ 'five': '5๏ธโฃ',
+ 'six': '6๏ธโฃ',
+ 'seven': '7๏ธโฃ',
+ 'eight': '8๏ธโฃ',
+ 'nine': '9๏ธโฃ',
+ 'keycap_ten': '๐',
+ 'asterisk': '*โฃ',
+ '1234': '๐ข',
+ 'eject_button': 'โ๏ธ',
+ 'arrow_forward': 'โถ๏ธ',
+ 'pause_button': 'โธ',
+ 'next_track_button': 'โญ',
+ 'stop_button': 'โน',
+ 'record_button': 'โบ',
+ 'play_or_pause_button': 'โฏ',
+ 'previous_track_button': 'โฎ',
+ 'fast_forward': 'โฉ',
+ 'rewind': 'โช',
+ 'twisted_rightwards_arrows': '๐',
+ 'repeat': '๐',
+ 'repeat_one': '๐',
+ 'arrow_backward': 'โ๏ธ',
+ 'arrow_up_small': '๐ผ',
+ 'arrow_down_small': '๐ฝ',
+ 'arrow_double_up': 'โซ',
+ 'arrow_double_down': 'โฌ',
+ 'arrow_right': 'โก๏ธ',
+ 'arrow_left': 'โฌ
๏ธ',
+ 'arrow_up': 'โฌ๏ธ',
+ 'arrow_down': 'โฌ๏ธ',
+ 'arrow_upper_right': 'โ๏ธ',
+ 'arrow_lower_right': 'โ๏ธ',
+ 'arrow_lower_left': 'โ๏ธ',
+ 'arrow_upper_left': 'โ๏ธ',
+ 'arrow_up_down': 'โ๏ธ',
+ 'left_right_arrow': '↔๏ธ',
+ 'arrows_counterclockwise': '๐',
+ 'arrow_right_hook': 'โช๏ธ',
+ 'leftwards_arrow_with_hook': 'โฉ๏ธ',
+ 'arrow_heading_up': 'โคด๏ธ',
+ 'arrow_heading_down': 'โคต๏ธ',
+ 'hash': '#๏ธโฃ',
+ 'information_source': 'โน๏ธ',
+ 'abc': '๐ค',
+ 'abcd': '๐ก',
+ 'capital_abcd': '๐ ',
+ 'symbols': '๐ฃ',
+ 'musical_note': '๐ต',
+ 'notes': '๐ถ',
+ 'wavy_dash': 'ใฐ๏ธ',
+ 'curly_loop': 'โฐ',
+ 'heavy_check_mark': 'โ๏ธ',
+ 'arrows_clockwise': '๐',
+ 'heavy_plus_sign': 'โ',
+ 'heavy_minus_sign': 'โ',
+ 'heavy_division_sign': 'โ',
+ 'heavy_multiplication_x': 'โ๏ธ',
+ 'heavy_dollar_sign': '๐ฒ',
+ 'currency_exchange': '๐ฑ',
+ 'copyright': '©๏ธ',
+ 'registered': '®๏ธ',
+ 'tm': '™๏ธ',
+ 'end': '๐',
+ 'back': '๐',
+ 'on': '๐',
+ 'top': '๐',
+ 'soon': '๐',
+ 'ballot_box_with_check': 'โ๏ธ',
+ 'radio_button': '๐',
+ 'white_circle': 'โช',
+ 'black_circle': 'โซ',
+ 'red_circle': '๐ด',
+ 'large_blue_circle': '๐ต',
+ 'small_orange_diamond': '๐ธ',
+ 'small_blue_diamond': '๐น',
+ 'large_orange_diamond': '๐ถ',
+ 'large_blue_diamond': '๐ท',
+ 'small_red_triangle': '๐บ',
+ 'black_small_square': 'โช๏ธ',
+ 'white_small_square': 'โซ๏ธ',
+ 'black_large_square': 'โฌ',
+ 'white_large_square': 'โฌ',
+ 'small_red_triangle_down': '๐ป',
+ 'black_medium_square': 'โผ๏ธ',
+ 'white_medium_square': 'โป๏ธ',
+ 'black_medium_small_square': 'โพ',
+ 'white_medium_small_square': 'โฝ',
+ 'black_square_button': '๐ฒ',
+ 'white_square_button': '๐ณ',
+ 'speaker': '๐',
+ 'sound': '๐',
+ 'loud_sound': '๐',
+ 'mute': '๐',
+ 'mega': '๐ฃ',
+ 'loudspeaker': '๐ข',
+ 'bell': '๐',
+ 'no_bell': '๐',
+ 'black_joker': '๐',
+ 'mahjong': '๐',
+ 'spades': '♠๏ธ',
+ 'clubs': '♣๏ธ',
+ 'hearts': '♥๏ธ',
+ 'diamonds': '♦๏ธ',
+ 'flower_playing_cards': '๐ด',
+ 'thought_balloon': '๐ญ',
+ 'right_anger_bubble': '๐ฏ',
+ 'speech_balloon': '๐ฌ',
+ 'left_speech_bubble': '๐จ',
+ 'clock1': '๐',
+ 'clock2': '๐',
+ 'clock3': '๐',
+ 'clock4': '๐',
+ 'clock5': '๐',
+ 'clock6': '๐',
+ 'clock7': '๐',
+ 'clock8': '๐',
+ 'clock9': '๐',
+ 'clock10': '๐',
+ 'clock11': '๐',
+ 'clock12': '๐',
+ 'clock130': '๐',
+ 'clock230': '๐',
+ 'clock330': '๐',
+ 'clock430': '๐',
+ 'clock530': '๐ ',
+ 'clock630': '๐ก',
+ 'clock730': '๐ข',
+ 'clock830': '๐ฃ',
+ 'clock930': '๐ค',
+ 'clock1030': '๐ฅ',
+ 'clock1130': '๐ฆ',
+ 'clock1230': '๐ง',
+ 'afghanistan': '๐ฆ๐ซ',
+ 'aland_islands': '๐ฆ๐ฝ',
+ 'albania': '๐ฆ๐ฑ',
+ 'algeria': '๐ฉ๐ฟ',
+ 'american_samoa': '๐ฆ๐ธ',
+ 'andorra': '๐ฆ๐ฉ',
+ 'angola': '๐ฆ๐ด',
+ 'anguilla': '๐ฆ๐ฎ',
+ 'antarctica': '๐ฆ๐ถ',
+ 'antigua_barbuda': '๐ฆ๐ฌ',
+ 'argentina': '๐ฆ๐ท',
+ 'armenia': '๐ฆ๐ฒ',
+ 'aruba': '๐ฆ๐ผ',
+ 'australia': '๐ฆ๐บ',
+ 'austria': '๐ฆ๐น',
+ 'azerbaijan': '๐ฆ๐ฟ',
+ 'bahamas': '๐ง๐ธ',
+ 'bahrain': '๐ง๐ญ',
+ 'bangladesh': '๐ง๐ฉ',
+ 'barbados': '๐ง๐ง',
+ 'belarus': '๐ง๐พ',
+ 'belgium': '๐ง๐ช',
+ 'belize': '๐ง๐ฟ',
+ 'benin': '๐ง๐ฏ',
+ 'bermuda': '๐ง๐ฒ',
+ 'bhutan': '๐ง๐น',
+ 'bolivia': '๐ง๐ด',
+ 'caribbean_netherlands': '๐ง๐ถ',
+ 'bosnia_herzegovina': '๐ง๐ฆ',
+ 'botswana': '๐ง๐ผ',
+ 'brazil': '๐ง๐ท',
+ 'british_indian_ocean_territory': '๐ฎ๐ด',
+ 'british_virgin_islands': '๐ป๐ฌ',
+ 'brunei': '๐ง๐ณ',
+ 'bulgaria': '๐ง๐ฌ',
+ 'burkina_faso': '๐ง๐ซ',
+ 'burundi': '๐ง๐ฎ',
+ 'cape_verde': '๐จ๐ป',
+ 'cambodia': '๐ฐ๐ญ',
+ 'cameroon': '๐จ๐ฒ',
+ 'canada': '๐จ๐ฆ',
+ 'canary_islands': '๐ฎ๐จ',
+ 'cayman_islands': '๐ฐ๐พ',
+ 'central_african_republic': '๐จ๐ซ',
+ 'chad': '๐น๐ฉ',
+ 'chile': '๐จ๐ฑ',
+ 'cn': '๐จ๐ณ',
+ 'christmas_island': '๐จ๐ฝ',
+ 'cocos_islands': '๐จ๐จ',
+ 'colombia': '๐จ๐ด',
+ 'comoros': '๐ฐ๐ฒ',
+ 'congo_brazzaville': '๐จ๐ฌ',
+ 'congo_kinshasa': '๐จ๐ฉ',
+ 'cook_islands': '๐จ๐ฐ',
+ 'costa_rica': '๐จ๐ท',
+ 'croatia': '๐ญ๐ท',
+ 'cuba': '๐จ๐บ',
+ 'curacao': '๐จ๐ผ',
+ 'cyprus': '๐จ๐พ',
+ 'czech_republic': '๐จ๐ฟ',
+ 'denmark': '๐ฉ๐ฐ',
+ 'djibouti': '๐ฉ๐ฏ',
+ 'dominica': '๐ฉ๐ฒ',
+ 'dominican_republic': '๐ฉ๐ด',
+ 'ecuador': '๐ช๐จ',
+ 'egypt': '๐ช๐ฌ',
+ 'el_salvador': '๐ธ๐ป',
+ 'equatorial_guinea': '๐ฌ๐ถ',
+ 'eritrea': '๐ช๐ท',
+ 'estonia': '๐ช๐ช',
+ 'ethiopia': '๐ช๐น',
+ 'eu': '๐ช๐บ',
+ 'falkland_islands': '๐ซ๐ฐ',
+ 'faroe_islands': '๐ซ๐ด',
+ 'fiji': '๐ซ๐ฏ',
+ 'finland': '๐ซ๐ฎ',
+ 'fr': '๐ซ๐ท',
+ 'french_guiana': '๐ฌ๐ซ',
+ 'french_polynesia': '๐ต๐ซ',
+ 'french_southern_territories': '๐น๐ซ',
+ 'gabon': '๐ฌ๐ฆ',
+ 'gambia': '๐ฌ๐ฒ',
+ 'georgia': '๐ฌ๐ช',
+ 'de': '๐ฉ๐ช',
+ 'ghana': '๐ฌ๐ญ',
+ 'gibraltar': '๐ฌ๐ฎ',
+ 'greece': '๐ฌ๐ท',
+ 'greenland': '๐ฌ๐ฑ',
+ 'grenada': '๐ฌ๐ฉ',
+ 'guadeloupe': '๐ฌ๐ต',
+ 'guam': '๐ฌ๐บ',
+ 'guatemala': '๐ฌ๐น',
+ 'guernsey': '๐ฌ๐ฌ',
+ 'guinea': '๐ฌ๐ณ',
+ 'guinea_bissau': '๐ฌ๐ผ',
+ 'guyana': '๐ฌ๐พ',
+ 'haiti': '๐ญ๐น',
+ 'honduras': '๐ญ๐ณ',
+ 'hong_kong': '๐ญ๐ฐ',
+ 'hungary': '๐ญ๐บ',
+ 'iceland': '๐ฎ๐ธ',
+ 'india': '๐ฎ๐ณ',
+ 'indonesia': '๐ฎ๐ฉ',
+ 'iran': '๐ฎ๐ท',
+ 'iraq': '๐ฎ๐ถ',
+ 'ireland': '๐ฎ๐ช',
+ 'isle_of_man': '๐ฎ๐ฒ',
+ 'israel': '๐ฎ๐ฑ',
+ 'it': '๐ฎ๐น',
+ 'cote_divoire': '๐จ๐ฎ',
+ 'jamaica': '๐ฏ๐ฒ',
+ 'jp': '๐ฏ๐ต',
+ 'jersey': '๐ฏ๐ช',
+ 'jordan': '๐ฏ๐ด',
+ 'kazakhstan': '๐ฐ๐ฟ',
+ 'kenya': '๐ฐ๐ช',
+ 'kiribati': '๐ฐ๐ฎ',
+ 'kosovo': '๐ฝ๐ฐ',
+ 'kuwait': '๐ฐ๐ผ',
+ 'kyrgyzstan': '๐ฐ๐ฌ',
+ 'laos': '๐ฑ๐ฆ',
+ 'latvia': '๐ฑ๐ป',
+ 'lebanon': '๐ฑ๐ง',
+ 'lesotho': '๐ฑ๐ธ',
+ 'liberia': '๐ฑ๐ท',
+ 'libya': '๐ฑ๐พ',
+ 'liechtenstein': '๐ฑ๐ฎ',
+ 'lithuania': '๐ฑ๐น',
+ 'luxembourg': '๐ฑ๐บ',
+ 'macau': '๐ฒ๐ด',
+ 'macedonia': '๐ฒ๐ฐ',
+ 'madagascar': '๐ฒ๐ฌ',
+ 'malawi': '๐ฒ๐ผ',
+ 'malaysia': '๐ฒ๐พ',
+ 'maldives': '๐ฒ๐ป',
+ 'mali': '๐ฒ๐ฑ',
+ 'malta': '๐ฒ๐น',
+ 'marshall_islands': '๐ฒ๐ญ',
+ 'martinique': '๐ฒ๐ถ',
+ 'mauritania': '๐ฒ๐ท',
+ 'mauritius': '๐ฒ๐บ',
+ 'mayotte': '๐พ๐น',
+ 'mexico': '๐ฒ๐ฝ',
+ 'micronesia': '๐ซ๐ฒ',
+ 'moldova': '๐ฒ๐ฉ',
+ 'monaco': '๐ฒ๐จ',
+ 'mongolia': '๐ฒ๐ณ',
+ 'montenegro': '๐ฒ๐ช',
+ 'montserrat': '๐ฒ๐ธ',
+ 'morocco': '๐ฒ๐ฆ',
+ 'mozambique': '๐ฒ๐ฟ',
+ 'myanmar': '๐ฒ๐ฒ',
+ 'namibia': '๐ณ๐ฆ',
+ 'nauru': '๐ณ๐ท',
+ 'nepal': '๐ณ๐ต',
+ 'netherlands': '๐ณ๐ฑ',
+ 'new_caledonia': '๐ณ๐จ',
+ 'new_zealand': '๐ณ๐ฟ',
+ 'nicaragua': '๐ณ๐ฎ',
+ 'niger': '๐ณ๐ช',
+ 'nigeria': '๐ณ๐ฌ',
+ 'niue': '๐ณ๐บ',
+ 'norfolk_island': '๐ณ๐ซ',
+ 'northern_mariana_islands': '๐ฒ๐ต',
+ 'north_korea': '๐ฐ๐ต',
+ 'norway': '๐ณ๐ด',
+ 'oman': '๐ด๐ฒ',
+ 'pakistan': '๐ต๐ฐ',
+ 'palau': '๐ต๐ผ',
+ 'palestinian_territories': '๐ต๐ธ',
+ 'panama': '๐ต๐ฆ',
+ 'papua_new_guinea': '๐ต๐ฌ',
+ 'paraguay': '๐ต๐พ',
+ 'peru': '๐ต๐ช',
+ 'philippines': '๐ต๐ญ',
+ 'pitcairn_islands': '๐ต๐ณ',
+ 'poland': '๐ต๐ฑ',
+ 'portugal': '๐ต๐น',
+ 'puerto_rico': '๐ต๐ท',
+ 'qatar': '๐ถ๐ฆ',
+ 'reunion': '๐ท๐ช',
+ 'romania': '๐ท๐ด',
+ 'ru': '๐ท๐บ',
+ 'rwanda': '๐ท๐ผ',
+ 'st_barthelemy': '๐ง๐ฑ',
+ 'st_helena': '๐ธ๐ญ',
+ 'st_kitts_nevis': '๐ฐ๐ณ',
+ 'st_lucia': '๐ฑ๐จ',
+ 'st_pierre_miquelon': '๐ต๐ฒ',
+ 'st_vincent_grenadines': '๐ป๐จ',
+ 'samoa': '๐ผ๐ธ',
+ 'san_marino': '๐ธ๐ฒ',
+ 'sao_tome_principe': '๐ธ๐น',
+ 'saudi_arabia': '๐ธ๐ฆ',
+ 'senegal': '๐ธ๐ณ',
+ 'serbia': '๐ท๐ธ',
+ 'seychelles': '๐ธ๐จ',
+ 'sierra_leone': '๐ธ๐ฑ',
+ 'singapore': '๐ธ๐ฌ',
+ 'sint_maarten': '๐ธ๐ฝ',
+ 'slovakia': '๐ธ๐ฐ',
+ 'slovenia': '๐ธ๐ฎ',
+ 'solomon_islands': '๐ธ๐ง',
+ 'somalia': '๐ธ๐ด',
+ 'south_africa': '๐ฟ๐ฆ',
+ 'south_georgia_south_sandwich_islands': '๐ฌ๐ธ',
+ 'kr': '๐ฐ๐ท',
+ 'south_sudan': '๐ธ๐ธ',
+ 'es': '๐ช๐ธ',
+ 'sri_lanka': '๐ฑ๐ฐ',
+ 'sudan': '๐ธ๐ฉ',
+ 'suriname': '๐ธ๐ท',
+ 'swaziland': '๐ธ๐ฟ',
+ 'sweden': '๐ธ๐ช',
+ 'switzerland': '๐จ๐ญ',
+ 'syria': '๐ธ๐พ',
+ 'taiwan': '๐น๐ผ',
+ 'tajikistan': '๐น๐ฏ',
+ 'tanzania': '๐น๐ฟ',
+ 'thailand': '๐น๐ญ',
+ 'timor_leste': '๐น๐ฑ',
+ 'togo': '๐น๐ฌ',
+ 'tokelau': '๐น๐ฐ',
+ 'tonga': '๐น๐ด',
+ 'trinidad_tobago': '๐น๐น',
+ 'tunisia': '๐น๐ณ',
+ 'tr': '๐น๐ท',
+ 'turkmenistan': '๐น๐ฒ',
+ 'turks_caicos_islands': '๐น๐จ',
+ 'tuvalu': '๐น๐ป',
+ 'uganda': '๐บ๐ฌ',
+ 'ukraine': '๐บ๐ฆ',
+ 'united_arab_emirates': '๐ฆ๐ช',
+ 'uk': '๐ฌ๐ง',
+ 'us': '๐บ๐ธ',
+ 'us_virgin_islands': '๐ป๐ฎ',
+ 'uruguay': '๐บ๐พ',
+ 'uzbekistan': '๐บ๐ฟ',
+ 'vanuatu': '๐ป๐บ',
+ 'vatican_city': '๐ป๐ฆ',
+ 'venezuela': '๐ป๐ช',
+ 'vietnam': '๐ป๐ณ',
+ 'wallis_futuna': '๐ผ๐ซ',
+ 'western_sahara': '๐ช๐ญ',
+ 'yemen': '๐พ๐ช',
+ 'zambia': '๐ฟ๐ฒ',
+ 'zimbabwe': '๐ฟ๐ผ',
+};
diff --git a/lib/src/extension_set.dart b/lib/src/extension_set.dart
index d18337a..984ca6e 100644
--- a/lib/src/extension_set.dart
+++ b/lib/src/extension_set.dart
@@ -37,7 +37,8 @@
const SetextHeaderWithIdSyntax(),
const TableSyntax()
], [
- new InlineHtmlSyntax()
+ new InlineHtmlSyntax(),
+ new EmojiSyntax(),
]);
/// The [gitHubFlavored] extension set is close to compliance with the [GitHub
diff --git a/lib/src/inline_parser.dart b/lib/src/inline_parser.dart
index 8c66d6e..a5e13a8 100644
--- a/lib/src/inline_parser.dart
+++ b/lib/src/inline_parser.dart
@@ -4,6 +4,7 @@
import 'ast.dart';
import 'document.dart';
+import 'emojis.dart';
import 'util.dart';
/// Maintains the internal state needed to parse inline span elements in
@@ -479,6 +480,29 @@
}
}
+/// Matches GitHub Markdown emoji syntax like `:smile:`.
+///
+/// There is no formal specification of GitHub's support for this colon-based
+/// emoji support, so this syntax is based on the results of Markdown-enabled
+/// text fields at github.com.
+class EmojiSyntax extends InlineSyntax {
+ // Emoji "aliases" are mostly limited to lower-case letters, numbers, and
+ // underscores, but GitHub also supports `:+1:` and `:-1:`.
+ EmojiSyntax() : super(':([a-z0-9_+-]+):');
+
+ bool onMatch(InlineParser parser, Match match) {
+ var alias = match[1];
+ var emoji = emojis[alias];
+ if (emoji == null) {
+ parser.advanceBy(1);
+ return false;
+ }
+ parser.addNode(new Text(emoji));
+
+ return true;
+ }
+}
+
/// Keeps track of a currently open tag while it is being parsed.
///
/// The parser maintains a stack of these so it can handle nested tags.
diff --git a/lib/src/version.dart b/lib/src/version.dart
index 5d1894e..5f432d2 100644
--- a/lib/src/version.dart
+++ b/lib/src/version.dart
@@ -1,2 +1,2 @@
/// The current version of markdown.
-final String version = '1.1.0';
+final String version = '1.1.1';
diff --git a/pubspec.yaml b/pubspec.yaml
index f260848..7f69f6e 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: markdown
-version: 1.1.0
+version: 1.1.1
author: Dart Team <misc@dartlang.org>
description: A library for converting markdown to HTML.
homepage: https://github.com/dart-lang/markdown
diff --git a/test/extensions/emojis.unit b/test/extensions/emojis.unit
new file mode 100644
index 0000000..142a5e5
--- /dev/null
+++ b/test/extensions/emojis.unit
@@ -0,0 +1,41 @@
+>>> within a paragraph
+I love to :smile:.
+
+<<<
+<p>I love to ๐.</p>
+>>> within other inline syntax
+I *love to :smile:*
+<<<
+<p>I <em>love to ๐</em></p>
+>>> within blockquote
+> I love to :smile:.
+<<<
+<blockquote>
+<p>I love to ๐.</p></blockquote>
+>>> within code block
+ I love to :smile:
+<<<
+<pre><code>I love to :smile:
+</code></pre>
+>>> within a link
+I love [to :smile:](http://www.google.com).
+<<<
+<p>I love <a href="http://www.google.com">to ๐</a>.</p>
+>>> within a reference link
+I love [to :smile:][].
+
+[to :smile:]: http://www.google.com
+<<<
+<p>I love <a href="http://www.google.com">to ๐</a>.</p>
+>>> within inline code
+I love to `:smile:`.
+<<<
+<p>I love to <code>:smile:</code>.</p>
+>>> with multiple code points
+Yay :australia:
+<<<
+<p>Yay ๐ฆ๐บ</p>
+>>> leaves unknown emojis alone
+I love :smiles:.
+<<<
+<p>I love :smiles:.</p>
diff --git a/test/markdown_test.dart b/test/markdown_test.dart
index 8ea7be7..9860d8e 100644
--- a/test/markdown_test.dart
+++ b/test/markdown_test.dart
@@ -7,21 +7,23 @@
import 'util.dart';
-/// Most of these tests are based on observing how showdown behaves:
-/// http://softwaremaniacs.org/playground/showdown-highlight/
void main() {
testDirectory('original');
+ // Block syntax extensions
testFile('extensions/fenced_code_blocks.unit',
blockSyntaxes: [const FencedCodeBlockSyntax()]);
- testFile('extensions/inline_html.unit',
- inlineSyntaxes: [new InlineHtmlSyntax()]);
testFile('extensions/headers_with_ids.unit',
blockSyntaxes: [const HeaderWithIdSyntax()]);
testFile('extensions/setext_headers_with_ids.unit',
blockSyntaxes: [const SetextHeaderWithIdSyntax()]);
testFile('extensions/tables.unit', blockSyntaxes: [const TableSyntax()]);
+ // Inline syntax extensions
+ testFile('extensions/emojis.unit', inlineSyntaxes: [new EmojiSyntax()]);
+ testFile('extensions/inline_html.unit',
+ inlineSyntaxes: [new InlineHtmlSyntax()]);
+
group('Resolver', () {
Node nyanResolver(String text) => new Text('~=[,,_${text}_,,]:3');
validateCore(
diff --git a/test/util.dart b/test/util.dart
index b54433f..2c87471 100644
--- a/test/util.dart
+++ b/test/util.dart
@@ -16,7 +16,9 @@
void testDirectory(String name) {
for (var dataCase
in dataCasesUnder(library: #markdown.test.util, subdirectory: name)) {
- validateCore(dataCase.description, dataCase.input, dataCase.expectedOutput);
+ var description =
+ '${dataCase.directory}/${dataCase.file}.unit ${dataCase.description}';
+ validateCore(description, dataCase.input, dataCase.expectedOutput);
}
}
@@ -29,7 +31,9 @@
{Iterable<BlockSyntax> blockSyntaxes,
Iterable<InlineSyntax> inlineSyntaxes}) {
for (var dataCase in dataCasesInFile(path: p.join(_testDir, file))) {
- validateCore(dataCase.description, dataCase.input, dataCase.expectedOutput,
+ var description =
+ '${dataCase.directory}/${dataCase.file}.unit ${dataCase.description}';
+ validateCore(description, dataCase.input, dataCase.expectedOutput,
blockSyntaxes: blockSyntaxes, inlineSyntaxes: inlineSyntaxes);
}
}
diff --git a/tool/update_emojis.dart b/tool/update_emojis.dart
new file mode 100644
index 0000000..7074d64
--- /dev/null
+++ b/tool/update_emojis.dart
@@ -0,0 +1,39 @@
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+
+final _emojisJsonRawUrl =
+ 'https://github.com/muan/emojilib/raw/master/emojis.json';
+final _emojisFilePath = 'lib/src/emojis.dart';
+
+Future<Null> main() async {
+ var client = new HttpClient();
+ var request = await client.getUrl(Uri.parse(_emojisJsonRawUrl));
+ var response = await request.close();
+ var json = JSON.decode(await response.transform(UTF8.decoder).join(''))
+ as Map<String, Map<String, dynamic>>;
+ var emojisContent = new StringBuffer('''
+// GENERATED FILE. DO NOT EDIT.
+//
+// This file was generated from emojilib's emoji data file:
+// $_emojisJsonRawUrl
+// at ${new DateTime.now()} by the script, tool/update_emojis.dart.
+
+''');
+ emojisContent.writeln('const emojis = const <String, String>{');
+ var emojiCount = 0;
+ var ignored = <String>[];
+ json.forEach((String alias, Map<String, dynamic> info) {
+ if (info['char'] != null) {
+ emojisContent.writeln(" '$alias': '${info['char']}',");
+ emojiCount++;
+ } else {
+ ignored.add(alias);
+ }
+ });
+ emojisContent.writeln('};');
+ new File(_emojisFilePath)..writeAsStringSync(emojisContent.toString());
+ print('Wrote data to $_emojisFilePath for $emojiCount emojis, '
+ 'ignoring ${ignored.length}: ${ignored.join(', ')}.');
+ exit(0);
+}