aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README6
-rw-r--r--changelog4
-rw-r--r--pandoc.cabal1
-rw-r--r--src/Text/Pandoc/Emoji.hs905
-rw-r--r--src/Text/Pandoc/Options.hs2
-rw-r--r--src/Text/Pandoc/Readers/Markdown.hs17
-rw-r--r--tests/Tests/Readers/Markdown.hs4
7 files changed, 938 insertions, 1 deletions
diff --git a/README b/README
index 408bc66a4..abc4c165b 100644
--- a/README
+++ b/README
@@ -3146,6 +3146,10 @@ treated as spaces or as hard line breaks. This option is intended for
use with East Asian languages where spaces are not used between words,
but text is divided into lines for readability.
+#### Extension: `emoji` ####
+
+Parses textual emojis like `:smile:` as Unicode emoticons.
+
#### Extension: `tex_math_single_backslash` ####
Causes anything between `\(` and `\)` to be interpreted as inline
@@ -3256,7 +3260,7 @@ variants are supported:
: `pipe_tables`, `raw_html`, `tex_math_single_backslash`,
`fenced_code_blocks`, `auto_identifiers`,
`ascii_identifiers`, `backtick_code_blocks`, `autolink_bare_uris`,
- `intraword_underscores`, `strikeout`, `hard_line_breaks`,
+ `intraword_underscores`, `strikeout`, `hard_line_breaks`, `emoji`,
`shortcut_reference_links`.
`markdown_mmd` (MultiMarkdown)
diff --git a/changelog b/changelog
index 46a8eb128..97e3bbaa0 100644
--- a/changelog
+++ b/changelog
@@ -5,6 +5,10 @@ pandoc (1.15.2)
* Fixed omitted `url(...)` in CSS data-uri with `--self-contained` (#2489).
+ * Added `emoji` Markdown extension, enabled by default in `markdown_github`
+ (#2523). Added `Ext_emoji` to `Extension` in `Text.Pandoc.Options`
+ (API change).
+
* `Text.Pandoc.Readers.HTML.parseTags`: Fixed over-eager raw HTML inline
parsing (#2469). Tightened up the inline HTML parser so it disallows
TagWarnings.
diff --git a/pandoc.cabal b/pandoc.cabal
index 7c2666edf..40f994ef1 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -391,6 +391,7 @@ Library
Text.Pandoc.Writers.Shared,
Text.Pandoc.Asciify,
Text.Pandoc.MIME,
+ Text.Pandoc.Emoji,
Text.Pandoc.Parsing,
Text.Pandoc.UUID,
Text.Pandoc.ImageSize,
diff --git a/src/Text/Pandoc/Emoji.hs b/src/Text/Pandoc/Emoji.hs
new file mode 100644
index 000000000..2ae7962cb
--- /dev/null
+++ b/src/Text/Pandoc/Emoji.hs
@@ -0,0 +1,905 @@
+{-
+Copyright (C) 2015 John MacFarlane <jgm@berkeley.edu>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-}
+
+{- |
+ Module : Text.Pandoc.Emoji
+ Copyright : Copyright (C) 2015 John MacFarlane
+ License : GNU GPL, version 2 or above
+
+ Maintainer : John MacFarlane <jgm@berkeley.edu>
+ Stability : alpha
+ Portability : portable
+
+Emoji symbol lookup from canonical string identifier.
+-}
+module Text.Pandoc.Emoji ( emojis ) where
+import qualified Data.Map as M
+
+emojis :: M.Map String String
+emojis = M.fromList
+ [ ("100", "๐Ÿ’ฏ")
+ , ("1234", "๐Ÿ”ข")
+ , ("smile", "๐Ÿ˜„")
+ , ("smiley", "๐Ÿ˜ƒ")
+ , ("grinning", "๐Ÿ˜€")
+ , ("blush", "๐Ÿ˜Š")
+ , ("relaxed", "โ˜บ๏ธ")
+ , ("wink", "๐Ÿ˜‰")
+ , ("heart_eyes", "๐Ÿ˜")
+ , ("kissing_heart", "๐Ÿ˜˜")
+ , ("kissing_closed_eyes", "๐Ÿ˜š")
+ , ("kissing", "๐Ÿ˜—")
+ , ("kissing_smiling_eyes", "๐Ÿ˜™")
+ , ("stuck_out_tongue_winking_eye", "๐Ÿ˜œ")
+ , ("stuck_out_tongue_closed_eyes", "๐Ÿ˜")
+ , ("stuck_out_tongue", "๐Ÿ˜›")
+ , ("flushed", "๐Ÿ˜ณ")
+ , ("grin", "๐Ÿ˜")
+ , ("pensive", "๐Ÿ˜”")
+ , ("relieved", "๐Ÿ˜Œ")
+ , ("unamused", "๐Ÿ˜’")
+ , ("disappointed", "๐Ÿ˜ž")
+ , ("persevere", "๐Ÿ˜ฃ")
+ , ("cry", "๐Ÿ˜ข")
+ , ("joy", "๐Ÿ˜‚")
+ , ("sob", "๐Ÿ˜ญ")
+ , ("sleepy", "๐Ÿ˜ช")
+ , ("disappointed_relieved", "๐Ÿ˜ฅ")
+ , ("cold_sweat", "๐Ÿ˜ฐ")
+ , ("sweat_smile", "๐Ÿ˜…")
+ , ("sweat", "๐Ÿ˜“")
+ , ("weary", "๐Ÿ˜ฉ")
+ , ("tired_face", "๐Ÿ˜ซ")
+ , ("fearful", "๐Ÿ˜จ")
+ , ("scream", "๐Ÿ˜ฑ")
+ , ("angry", "๐Ÿ˜ ")
+ , ("rage", "๐Ÿ˜ก")
+ , ("triumph", "๐Ÿ˜ค")
+ , ("confounded", "๐Ÿ˜–")
+ , ("laughing", "๐Ÿ˜†")
+ , ("satisfied", "๐Ÿ˜†")
+ , ("yum", "๐Ÿ˜‹")
+ , ("mask", "๐Ÿ˜ท")
+ , ("sunglasses", "๐Ÿ˜Ž")
+ , ("sleeping", "๐Ÿ˜ด")
+ , ("dizzy_face", "๐Ÿ˜ต")
+ , ("astonished", "๐Ÿ˜ฒ")
+ , ("worried", "๐Ÿ˜Ÿ")
+ , ("frowning", "๐Ÿ˜ฆ")
+ , ("anguished", "๐Ÿ˜ง")
+ , ("smiling_imp", "๐Ÿ˜ˆ")
+ , ("imp", "๐Ÿ‘ฟ")
+ , ("open_mouth", "๐Ÿ˜ฎ")
+ , ("grimacing", "๐Ÿ˜ฌ")
+ , ("neutral_face", "๐Ÿ˜")
+ , ("confused", "๐Ÿ˜•")
+ , ("hushed", "๐Ÿ˜ฏ")
+ , ("no_mouth", "๐Ÿ˜ถ")
+ , ("innocent", "๐Ÿ˜‡")
+ , ("smirk", "๐Ÿ˜")
+ , ("expressionless", "๐Ÿ˜‘")
+ , ("man_with_gua_pi_mao", "๐Ÿ‘ฒ")
+ , ("man_with_turban", "๐Ÿ‘ณ")
+ , ("cop", "๐Ÿ‘ฎ")
+ , ("construction_worker", "๐Ÿ‘ท")
+ , ("guardsman", "๐Ÿ’‚")
+ , ("baby", "๐Ÿ‘ถ")
+ , ("boy", "๐Ÿ‘ฆ")
+ , ("girl", "๐Ÿ‘ง")
+ , ("man", "๐Ÿ‘จ")
+ , ("woman", "๐Ÿ‘ฉ")
+ , ("older_man", "๐Ÿ‘ด")
+ , ("older_woman", "๐Ÿ‘ต")
+ , ("person_with_blond_hair", "๐Ÿ‘ฑ")
+ , ("angel", "๐Ÿ‘ผ")
+ , ("princess", "๐Ÿ‘ธ")
+ , ("smiley_cat", "๐Ÿ˜บ")
+ , ("smile_cat", "๐Ÿ˜ธ")
+ , ("heart_eyes_cat", "๐Ÿ˜ป")
+ , ("kissing_cat", "๐Ÿ˜ฝ")
+ , ("smirk_cat", "๐Ÿ˜ผ")
+ , ("scream_cat", "๐Ÿ™€")
+ , ("crying_cat_face", "๐Ÿ˜ฟ")
+ , ("joy_cat", "๐Ÿ˜น")
+ , ("pouting_cat", "๐Ÿ˜พ")
+ , ("japanese_ogre", "๐Ÿ‘น")
+ , ("japanese_goblin", "๐Ÿ‘บ")
+ , ("see_no_evil", "๐Ÿ™ˆ")
+ , ("hear_no_evil", "๐Ÿ™‰")
+ , ("speak_no_evil", "๐Ÿ™Š")
+ , ("skull", "๐Ÿ’€")
+ , ("alien", "๐Ÿ‘ฝ")
+ , ("hankey", "๐Ÿ’ฉ")
+ , ("poop", "๐Ÿ’ฉ")
+ , ("shit", "๐Ÿ’ฉ")
+ , ("fire", "๐Ÿ”ฅ")
+ , ("sparkles", "โœจ")
+ , ("star2", "๐ŸŒŸ")
+ , ("dizzy", "๐Ÿ’ซ")
+ , ("boom", "๐Ÿ’ฅ")
+ , ("collision", "๐Ÿ’ฅ")
+ , ("anger", "๐Ÿ’ข")
+ , ("sweat_drops", "๐Ÿ’ฆ")
+ , ("droplet", "๐Ÿ’ง")
+ , ("zzz", "๐Ÿ’ค")
+ , ("dash", "๐Ÿ’จ")
+ , ("ear", "๐Ÿ‘‚")
+ , ("eyes", "๐Ÿ‘€")
+ , ("nose", "๐Ÿ‘ƒ")
+ , ("tongue", "๐Ÿ‘…")
+ , ("lips", "๐Ÿ‘„")
+ , ("+1", "๐Ÿ‘")
+ , ("thumbsup", "๐Ÿ‘")
+ , ("-1", "๐Ÿ‘Ž")
+ , ("thumbsdown", "๐Ÿ‘Ž")
+ , ("ok_hand", "๐Ÿ‘Œ")
+ , ("facepunch", "๐Ÿ‘Š")
+ , ("punch", "๐Ÿ‘Š")
+ , ("fist", "โœŠ")
+ , ("v", "โœŒ๏ธ")
+ , ("wave", "๐Ÿ‘‹")
+ , ("hand", "โœ‹")
+ , ("raised_hand", "โœ‹")
+ , ("open_hands", "๐Ÿ‘")
+ , ("point_up_2", "๐Ÿ‘†")
+ , ("point_down", "๐Ÿ‘‡")
+ , ("point_right", "๐Ÿ‘‰")
+ , ("point_left", "๐Ÿ‘ˆ")
+ , ("raised_hands", "๐Ÿ™Œ")
+ , ("pray", "๐Ÿ™")
+ , ("point_up", "โ˜๏ธ")
+ , ("clap", "๐Ÿ‘")
+ , ("muscle", "๐Ÿ’ช")
+ , ("walking", "๐Ÿšถ")
+ , ("runner", "๐Ÿƒ")
+ , ("running", "๐Ÿƒ")
+ , ("dancer", "๐Ÿ’ƒ")
+ , ("couple", "๐Ÿ‘ซ")
+ , ("family", "๐Ÿ‘ช")
+ , ("two_men_holding_hands", "๐Ÿ‘ฌ")
+ , ("two_women_holding_hands", "๐Ÿ‘ญ")
+ , ("couplekiss", "๐Ÿ’")
+ , ("couple_with_heart", "๐Ÿ’‘")
+ , ("dancers", "๐Ÿ‘ฏ")
+ , ("ok_woman", "๐Ÿ™†")
+ , ("no_good", "๐Ÿ™…")
+ , ("information_desk_person", "๐Ÿ’")
+ , ("raising_hand", "๐Ÿ™‹")
+ , ("massage", "๐Ÿ’†")
+ , ("haircut", "๐Ÿ’‡")
+ , ("nail_care", "๐Ÿ’…")
+ , ("bride_with_veil", "๐Ÿ‘ฐ")
+ , ("person_with_pouting_face", "๐Ÿ™Ž")
+ , ("person_frowning", "๐Ÿ™")
+ , ("bow", "๐Ÿ™‡")
+ , ("tophat", "๐ŸŽฉ")
+ , ("crown", "๐Ÿ‘‘")
+ , ("womans_hat", "๐Ÿ‘’")
+ , ("athletic_shoe", "๐Ÿ‘Ÿ")
+ , ("mans_shoe", "๐Ÿ‘ž")
+ , ("shoe", "๐Ÿ‘ž")
+ , ("sandal", "๐Ÿ‘ก")
+ , ("high_heel", "๐Ÿ‘ ")
+ , ("boot", "๐Ÿ‘ข")
+ , ("shirt", "๐Ÿ‘•")
+ , ("tshirt", "๐Ÿ‘•")
+ , ("necktie", "๐Ÿ‘”")
+ , ("womans_clothes", "๐Ÿ‘š")
+ , ("dress", "๐Ÿ‘—")
+ , ("running_shirt_with_sash", "๐ŸŽฝ")
+ , ("jeans", "๐Ÿ‘–")
+ , ("kimono", "๐Ÿ‘˜")
+ , ("bikini", "๐Ÿ‘™")
+ , ("briefcase", "๐Ÿ’ผ")
+ , ("handbag", "๐Ÿ‘œ")
+ , ("pouch", "๐Ÿ‘")
+ , ("purse", "๐Ÿ‘›")
+ , ("eyeglasses", "๐Ÿ‘“")
+ , ("ribbon", "๐ŸŽ€")
+ , ("closed_umbrella", "๐ŸŒ‚")
+ , ("lipstick", "๐Ÿ’„")
+ , ("yellow_heart", "๐Ÿ’›")
+ , ("blue_heart", "๐Ÿ’™")
+ , ("purple_heart", "๐Ÿ’œ")
+ , ("green_heart", "๐Ÿ’š")
+ , ("heart", "โค๏ธ")
+ , ("broken_heart", "๐Ÿ’”")
+ , ("heartpulse", "๐Ÿ’—")
+ , ("heartbeat", "๐Ÿ’“")
+ , ("two_hearts", "๐Ÿ’•")
+ , ("sparkling_heart", "๐Ÿ’–")
+ , ("revolving_hearts", "๐Ÿ’ž")
+ , ("cupid", "๐Ÿ’˜")
+ , ("love_letter", "๐Ÿ’Œ")
+ , ("kiss", "๐Ÿ’‹")
+ , ("ring", "๐Ÿ’")
+ , ("gem", "๐Ÿ’Ž")
+ , ("bust_in_silhouette", "๐Ÿ‘ค")
+ , ("busts_in_silhouette", "๐Ÿ‘ฅ")
+ , ("speech_balloon", "๐Ÿ’ฌ")
+ , ("footprints", "๐Ÿ‘ฃ")
+ , ("thought_balloon", "๐Ÿ’ญ")
+ , ("dog", "๐Ÿถ")
+ , ("wolf", "๐Ÿบ")
+ , ("cat", "๐Ÿฑ")
+ , ("mouse", "๐Ÿญ")
+ , ("hamster", "๐Ÿน")
+ , ("rabbit", "๐Ÿฐ")
+ , ("frog", "๐Ÿธ")
+ , ("tiger", "๐Ÿฏ")
+ , ("koala", "๐Ÿจ")
+ , ("bear", "๐Ÿป")
+ , ("pig", "๐Ÿท")
+ , ("pig_nose", "๐Ÿฝ")
+ , ("cow", "๐Ÿฎ")
+ , ("boar", "๐Ÿ—")
+ , ("monkey_face", "๐Ÿต")
+ , ("monkey", "๐Ÿ’")
+ , ("horse", "๐Ÿด")
+ , ("sheep", "๐Ÿ‘")
+ , ("elephant", "๐Ÿ˜")
+ , ("panda_face", "๐Ÿผ")
+ , ("penguin", "๐Ÿง")
+ , ("bird", "๐Ÿฆ")
+ , ("baby_chick", "๐Ÿค")
+ , ("hatched_chick", "๐Ÿฅ")
+ , ("hatching_chick", "๐Ÿฃ")
+ , ("chicken", "๐Ÿ”")
+ , ("snake", "๐Ÿ")
+ , ("turtle", "๐Ÿข")
+ , ("bug", "๐Ÿ›")
+ , ("bee", "๐Ÿ")
+ , ("honeybee", "๐Ÿ")
+ , ("ant", "๐Ÿœ")
+ , ("beetle", "๐Ÿž")
+ , ("snail", "๐ŸŒ")
+ , ("octopus", "๐Ÿ™")
+ , ("shell", "๐Ÿš")
+ , ("tropical_fish", "๐Ÿ ")
+ , ("fish", "๐ŸŸ")
+ , ("dolphin", "๐Ÿฌ")
+ , ("flipper", "๐Ÿฌ")
+ , ("whale", "๐Ÿณ")
+ , ("whale2", "๐Ÿ‹")
+ , ("cow2", "๐Ÿ„")
+ , ("ram", "๐Ÿ")
+ , ("rat", "๐Ÿ€")
+ , ("water_buffalo", "๐Ÿƒ")
+ , ("tiger2", "๐Ÿ…")
+ , ("rabbit2", "๐Ÿ‡")
+ , ("dragon", "๐Ÿ‰")
+ , ("racehorse", "๐ŸŽ")
+ , ("goat", "๐Ÿ")
+ , ("rooster", "๐Ÿ“")
+ , ("dog2", "๐Ÿ•")
+ , ("pig2", "๐Ÿ–")
+ , ("mouse2", "๐Ÿ")
+ , ("ox", "๐Ÿ‚")
+ , ("dragon_face", "๐Ÿฒ")
+ , ("blowfish", "๐Ÿก")
+ , ("crocodile", "๐ŸŠ")
+ , ("camel", "๐Ÿซ")
+ , ("dromedary_camel", "๐Ÿช")
+ , ("leopard", "๐Ÿ†")
+ , ("cat2", "๐Ÿˆ")
+ , ("poodle", "๐Ÿฉ")
+ , ("feet", "๐Ÿพ")
+ , ("paw_prints", "๐Ÿพ")
+ , ("bouquet", "๐Ÿ’")
+ , ("cherry_blossom", "๐ŸŒธ")
+ , ("tulip", "๐ŸŒท")
+ , ("four_leaf_clover", "๐Ÿ€")
+ , ("rose", "๐ŸŒน")
+ , ("sunflower", "๐ŸŒป")
+ , ("hibiscus", "๐ŸŒบ")
+ , ("maple_leaf", "๐Ÿ")
+ , ("leaves", "๐Ÿƒ")
+ , ("fallen_leaf", "๐Ÿ‚")
+ , ("herb", "๐ŸŒฟ")
+ , ("ear_of_rice", "๐ŸŒพ")
+ , ("mushroom", "๐Ÿ„")
+ , ("cactus", "๐ŸŒต")
+ , ("palm_tree", "๐ŸŒด")
+ , ("evergreen_tree", "๐ŸŒฒ")
+ , ("deciduous_tree", "๐ŸŒณ")
+ , ("chestnut", "๐ŸŒฐ")
+ , ("seedling", "๐ŸŒฑ")
+ , ("blossom", "๐ŸŒผ")
+ , ("globe_with_meridians", "๐ŸŒ")
+ , ("sun_with_face", "๐ŸŒž")
+ , ("full_moon_with_face", "๐ŸŒ")
+ , ("new_moon_with_face", "๐ŸŒš")
+ , ("new_moon", "๐ŸŒ‘")
+ , ("waxing_crescent_moon", "๐ŸŒ’")
+ , ("first_quarter_moon", "๐ŸŒ“")
+ , ("moon", "๐ŸŒ”")
+ , ("waxing_gibbous_moon", "๐ŸŒ”")
+ , ("full_moon", "๐ŸŒ•")
+ , ("waning_gibbous_moon", "๐ŸŒ–")
+ , ("last_quarter_moon", "๐ŸŒ—")
+ , ("waning_crescent_moon", "๐ŸŒ˜")
+ , ("last_quarter_moon_with_face", "๐ŸŒœ")
+ , ("first_quarter_moon_with_face", "๐ŸŒ›")
+ , ("crescent_moon", "๐ŸŒ™")
+ , ("earth_africa", "๐ŸŒ")
+ , ("earth_americas", "๐ŸŒŽ")
+ , ("earth_asia", "๐ŸŒ")
+ , ("volcano", "๐ŸŒ‹")
+ , ("milky_way", "๐ŸŒŒ")
+ , ("stars", "๐ŸŒ ")
+ , ("star", "โญ")
+ , ("sunny", "โ˜€๏ธ")
+ , ("partly_sunny", "โ›…")
+ , ("cloud", "โ˜๏ธ")
+ , ("zap", "โšก")
+ , ("umbrella", "โ˜”")
+ , ("snowflake", "โ„๏ธ")
+ , ("snowman", "โ›„")
+ , ("cyclone", "๐ŸŒ€")
+ , ("foggy", "๐ŸŒ")
+ , ("rainbow", "๐ŸŒˆ")
+ , ("ocean", "๐ŸŒŠ")
+ , ("bamboo", "๐ŸŽ")
+ , ("gift_heart", "๐Ÿ’")
+ , ("dolls", "๐ŸŽŽ")
+ , ("school_satchel", "๐ŸŽ’")
+ , ("mortar_board", "๐ŸŽ“")
+ , ("flags", "๐ŸŽ")
+ , ("fireworks", "๐ŸŽ†")
+ , ("sparkler", "๐ŸŽ‡")
+ , ("wind_chime", "๐ŸŽ")
+ , ("rice_scene", "๐ŸŽ‘")
+ , ("jack_o_lantern", "๐ŸŽƒ")
+ , ("ghost", "๐Ÿ‘ป")
+ , ("santa", "๐ŸŽ…")
+ , ("christmas_tree", "๐ŸŽ„")
+ , ("gift", "๐ŸŽ")
+ , ("tanabata_tree", "๐ŸŽ‹")
+ , ("tada", "๐ŸŽ‰")
+ , ("confetti_ball", "๐ŸŽŠ")
+ , ("balloon", "๐ŸŽˆ")
+ , ("crossed_flags", "๐ŸŽŒ")
+ , ("crystal_ball", "๐Ÿ”ฎ")
+ , ("movie_camera", "๐ŸŽฅ")
+ , ("camera", "๐Ÿ“ท")
+ , ("video_camera", "๐Ÿ“น")
+ , ("vhs", "๐Ÿ“ผ")
+ , ("cd", "๐Ÿ’ฟ")
+ , ("dvd", "๐Ÿ“€")
+ , ("minidisc", "๐Ÿ’ฝ")
+ , ("floppy_disk", "๐Ÿ’พ")
+ , ("computer", "๐Ÿ’ป")
+ , ("iphone", "๐Ÿ“ฑ")
+ , ("phone", "โ˜Ž๏ธ")
+ , ("telephone", "โ˜Ž๏ธ")
+ , ("telephone_receiver", "๐Ÿ“ž")
+ , ("pager", "๐Ÿ“Ÿ")
+ , ("fax", "๐Ÿ“ ")
+ , ("satellite", "๐Ÿ“ก")
+ , ("tv", "๐Ÿ“บ")
+ , ("radio", "๐Ÿ“ป")
+ , ("loud_sound", "๐Ÿ”Š")
+ , ("sound", "๐Ÿ”‰")
+ , ("speaker", "๐Ÿ”ˆ")
+ , ("mute", "๐Ÿ”‡")
+ , ("bell", "๐Ÿ””")
+ , ("no_bell", "๐Ÿ”•")
+ , ("loudspeaker", "๐Ÿ“ข")
+ , ("mega", "๐Ÿ“ฃ")
+ , ("hourglass_flowing_sand", "โณ")
+ , ("hourglass", "โŒ›")
+ , ("alarm_clock", "โฐ")
+ , ("watch", "โŒš")
+ , ("unlock", "๐Ÿ”“")
+ , ("lock", "๐Ÿ”’")
+ , ("lock_with_ink_pen", "๐Ÿ”")
+ , ("closed_lock_with_key", "๐Ÿ”")
+ , ("key", "๐Ÿ”‘")
+ , ("mag_right", "๐Ÿ”Ž")
+ , ("bulb", "๐Ÿ’ก")
+ , ("flashlight", "๐Ÿ”ฆ")
+ , ("high_brightness", "๐Ÿ”†")
+ , ("low_brightness", "๐Ÿ”…")
+ , ("electric_plug", "๐Ÿ”Œ")
+ , ("battery", "๐Ÿ”‹")
+ , ("mag", "๐Ÿ”")
+ , ("bathtub", "๐Ÿ›")
+ , ("bath", "๐Ÿ›€")
+ , ("shower", "๐Ÿšฟ")
+ , ("toilet", "๐Ÿšฝ")
+ , ("wrench", "๐Ÿ”ง")
+ , ("nut_and_bolt", "๐Ÿ”ฉ")
+ , ("hammer", "๐Ÿ”จ")
+ , ("door", "๐Ÿšช")
+ , ("smoking", "๐Ÿšฌ")
+ , ("bomb", "๐Ÿ’ฃ")
+ , ("gun", "๐Ÿ”ซ")
+ , ("hocho", "๐Ÿ”ช")
+ , ("knife", "๐Ÿ”ช")
+ , ("pill", "๐Ÿ’Š")
+ , ("syringe", "๐Ÿ’‰")
+ , ("moneybag", "๐Ÿ’ฐ")
+ , ("yen", "๐Ÿ’ด")
+ , ("dollar", "๐Ÿ’ต")
+ , ("pound", "๐Ÿ’ท")
+ , ("euro", "๐Ÿ’ถ")
+ , ("credit_card", "๐Ÿ’ณ")
+ , ("money_with_wings", "๐Ÿ’ธ")
+ , ("calling", "๐Ÿ“ฒ")
+ , ("e-mail", "๐Ÿ“ง")
+ , ("inbox_tray", "๐Ÿ“ฅ")
+ , ("outbox_tray", "๐Ÿ“ค")
+ , ("email", "โœ‰๏ธ")
+ , ("envelope", "โœ‰๏ธ")
+ , ("envelope_with_arrow", "๐Ÿ“ฉ")
+ , ("incoming_envelope", "๐Ÿ“จ")
+ , ("postal_horn", "๐Ÿ“ฏ")
+ , ("mailbox", "๐Ÿ“ซ")
+ , ("mailbox_closed", "๐Ÿ“ช")
+ , ("mailbox_with_mail", "๐Ÿ“ฌ")
+ , ("mailbox_with_no_mail", "๐Ÿ“ญ")
+ , ("postbox", "๐Ÿ“ฎ")
+ , ("package", "๐Ÿ“ฆ")
+ , ("memo", "๐Ÿ“")
+ , ("pencil", "๐Ÿ“")
+ , ("page_facing_up", "๐Ÿ“„")
+ , ("page_with_curl", "๐Ÿ“ƒ")
+ , ("bookmark_tabs", "๐Ÿ“‘")
+ , ("bar_chart", "๐Ÿ“Š")
+ , ("chart_with_upwards_trend", "๐Ÿ“ˆ")
+ , ("chart_with_downwards_trend", "๐Ÿ“‰")
+ , ("scroll", "๐Ÿ“œ")
+ , ("clipboard", "๐Ÿ“‹")
+ , ("date", "๐Ÿ“…")
+ , ("calendar", "๐Ÿ“†")
+ , ("card_index", "๐Ÿ“‡")
+ , ("file_folder", "๐Ÿ“")
+ , ("open_file_folder", "๐Ÿ“‚")
+ , ("scissors", "โœ‚๏ธ")
+ , ("pushpin", "๐Ÿ“Œ")
+ , ("paperclip", "๐Ÿ“Ž")
+ , ("black_nib", "โœ’๏ธ")
+ , ("pencil2", "โœ๏ธ")
+ , ("straight_ruler", "๐Ÿ“")
+ , ("triangular_ruler", "๐Ÿ“")
+ , ("closed_book", "๐Ÿ“•")
+ , ("green_book", "๐Ÿ“—")
+ , ("blue_book", "๐Ÿ“˜")
+ , ("orange_book", "๐Ÿ“™")
+ , ("notebook", "๐Ÿ““")
+ , ("notebook_with_decorative_cover", "๐Ÿ“”")
+ , ("ledger", "๐Ÿ“’")
+ , ("books", "๐Ÿ“š")
+ , ("book", "๐Ÿ“–")
+ , ("open_book", "๐Ÿ“–")
+ , ("bookmark", "๐Ÿ”–")
+ , ("name_badge", "๐Ÿ“›")
+ , ("microscope", "๐Ÿ”ฌ")
+ , ("telescope", "๐Ÿ”ญ")
+ , ("newspaper", "๐Ÿ“ฐ")
+ , ("art", "๐ŸŽจ")
+ , ("clapper", "๐ŸŽฌ")
+ , ("microphone", "๐ŸŽค")
+ , ("headphones", "๐ŸŽง")
+ , ("musical_score", "๐ŸŽผ")
+ , ("musical_note", "๐ŸŽต")
+ , ("notes", "๐ŸŽถ")
+ , ("musical_keyboard", "๐ŸŽน")
+ , ("violin", "๐ŸŽป")
+ , ("trumpet", "๐ŸŽบ")
+ , ("saxophone", "๐ŸŽท")
+ , ("guitar", "๐ŸŽธ")
+ , ("space_invader", "๐Ÿ‘พ")
+ , ("video_game", "๐ŸŽฎ")
+ , ("black_joker", "๐Ÿƒ")
+ , ("flower_playing_cards", "๐ŸŽด")
+ , ("mahjong", "๐Ÿ€„")
+ , ("game_die", "๐ŸŽฒ")
+ , ("dart", "๐ŸŽฏ")
+ , ("football", "๐Ÿˆ")
+ , ("basketball", "๐Ÿ€")
+ , ("soccer", "โšฝ")
+ , ("baseball", "โšพ๏ธ")
+ , ("tennis", "๐ŸŽพ")
+ , ("8ball", "๐ŸŽฑ")
+ , ("rugby_football", "๐Ÿ‰")
+ , ("bowling", "๐ŸŽณ")
+ , ("golf", "โ›ณ")
+ , ("mountain_bicyclist", "๐Ÿšต")
+ , ("bicyclist", "๐Ÿšด")
+ , ("checkered_flag", "๐Ÿ")
+ , ("horse_racing", "๐Ÿ‡")
+ , ("trophy", "๐Ÿ†")
+ , ("ski", "๐ŸŽฟ")
+ , ("snowboarder", "๐Ÿ‚")
+ , ("swimmer", "๐ŸŠ")
+ , ("surfer", "๐Ÿ„")
+ , ("fishing_pole_and_fish", "๐ŸŽฃ")
+ , ("coffee", "โ˜•")
+ , ("tea", "๐Ÿต")
+ , ("sake", "๐Ÿถ")
+ , ("baby_bottle", "๐Ÿผ")
+ , ("beer", "๐Ÿบ")
+ , ("beers", "๐Ÿป")
+ , ("cocktail", "๐Ÿธ")
+ , ("tropical_drink", "๐Ÿน")
+ , ("wine_glass", "๐Ÿท")
+ , ("fork_and_knife", "๐Ÿด")
+ , ("pizza", "๐Ÿ•")
+ , ("hamburger", "๐Ÿ”")
+ , ("fries", "๐ŸŸ")
+ , ("poultry_leg", "๐Ÿ—")
+ , ("meat_on_bone", "๐Ÿ–")
+ , ("spaghetti", "๐Ÿ")
+ , ("curry", "๐Ÿ›")
+ , ("fried_shrimp", "๐Ÿค")
+ , ("bento", "๐Ÿฑ")
+ , ("sushi", "๐Ÿฃ")
+ , ("fish_cake", "๐Ÿฅ")
+ , ("rice_ball", "๐Ÿ™")
+ , ("rice_cracker", "๐Ÿ˜")
+ , ("rice", "๐Ÿš")
+ , ("ramen", "๐Ÿœ")
+ , ("stew", "๐Ÿฒ")
+ , ("oden", "๐Ÿข")
+ , ("dango", "๐Ÿก")
+ , ("egg", "๐Ÿณ")
+ , ("bread", "๐Ÿž")
+ , ("doughnut", "๐Ÿฉ")
+ , ("custard", "๐Ÿฎ")
+ , ("icecream", "๐Ÿฆ")
+ , ("ice_cream", "๐Ÿจ")
+ , ("shaved_ice", "๐Ÿง")
+ , ("birthday", "๐ŸŽ‚")
+ , ("cake", "๐Ÿฐ")
+ , ("cookie", "๐Ÿช")
+ , ("chocolate_bar", "๐Ÿซ")
+ , ("candy", "๐Ÿฌ")
+ , ("lollipop", "๐Ÿญ")
+ , ("honey_pot", "๐Ÿฏ")
+ , ("apple", "๐ŸŽ")
+ , ("green_apple", "๐Ÿ")
+ , ("tangerine", "๐ŸŠ")
+ , ("lemon", "๐Ÿ‹")
+ , ("cherries", "๐Ÿ’")
+ , ("grapes", "๐Ÿ‡")
+ , ("watermelon", "๐Ÿ‰")
+ , ("strawberry", "๐Ÿ“")
+ , ("peach", "๐Ÿ‘")
+ , ("melon", "๐Ÿˆ")
+ , ("banana", "๐ŸŒ")
+ , ("pear", "๐Ÿ")
+ , ("pineapple", "๐Ÿ")
+ , ("sweet_potato", "๐Ÿ ")
+ , ("eggplant", "๐Ÿ†")
+ , ("tomato", "๐Ÿ…")
+ , ("corn", "๐ŸŒฝ")
+ , ("house", "๐Ÿ ")
+ , ("house_with_garden", "๐Ÿก")
+ , ("school", "๐Ÿซ")
+ , ("office", "๐Ÿข")
+ , ("post_office", "๐Ÿฃ")
+ , ("hospital", "๐Ÿฅ")
+ , ("bank", "๐Ÿฆ")
+ , ("convenience_store", "๐Ÿช")
+ , ("love_hotel", "๐Ÿฉ")
+ , ("hotel", "๐Ÿจ")
+ , ("wedding", "๐Ÿ’’")
+ , ("church", "โ›ช")
+ , ("department_store", "๐Ÿฌ")
+ , ("european_post_office", "๐Ÿค")
+ , ("city_sunrise", "๐ŸŒ‡")
+ , ("city_sunset", "๐ŸŒ†")
+ , ("japanese_castle", "๐Ÿฏ")
+ , ("european_castle", "๐Ÿฐ")
+ , ("tent", "โ›บ")
+ , ("factory", "๐Ÿญ")
+ , ("tokyo_tower", "๐Ÿ—ผ")
+ , ("japan", "๐Ÿ—พ")
+ , ("mount_fuji", "๐Ÿ—ป")
+ , ("sunrise_over_mountains", "๐ŸŒ„")
+ , ("sunrise", "๐ŸŒ…")
+ , ("night_with_stars", "๐ŸŒƒ")
+ , ("statue_of_liberty", "๐Ÿ—ฝ")
+ , ("bridge_at_night", "๐ŸŒ‰")
+ , ("carousel_horse", "๐ŸŽ ")
+ , ("ferris_wheel", "๐ŸŽก")
+ , ("fountain", "โ›ฒ")
+ , ("roller_coaster", "๐ŸŽข")
+ , ("ship", "๐Ÿšข")
+ , ("boat", "โ›ต")
+ , ("sailboat", "โ›ต")
+ , ("speedboat", "๐Ÿšค")
+ , ("rowboat", "๐Ÿšฃ")
+ , ("anchor", "โš“")
+ , ("rocket", "๐Ÿš€")
+ , ("airplane", "โœˆ๏ธ")
+ , ("seat", "๐Ÿ’บ")
+ , ("helicopter", "๐Ÿš")
+ , ("steam_locomotive", "๐Ÿš‚")
+ , ("tram", "๐ŸšŠ")
+ , ("station", "๐Ÿš‰")
+ , ("mountain_railway", "๐Ÿšž")
+ , ("train2", "๐Ÿš†")
+ , ("bullettrain_side", "๐Ÿš„")
+ , ("bullettrain_front", "๐Ÿš…")
+ , ("light_rail", "๐Ÿšˆ")
+ , ("metro", "๐Ÿš‡")
+ , ("monorail", "๐Ÿš")
+ , ("train", "๐Ÿš‹")
+ , ("railway_car", "๐Ÿšƒ")
+ , ("trolleybus", "๐ŸšŽ")
+ , ("bus", "๐ŸšŒ")
+ , ("oncoming_bus", "๐Ÿš")
+ , ("blue_car", "๐Ÿš™")
+ , ("oncoming_automobile", "๐Ÿš˜")
+ , ("car", "๐Ÿš—")
+ , ("red_car", "๐Ÿš—")
+ , ("taxi", "๐Ÿš•")
+ , ("oncoming_taxi", "๐Ÿš–")
+ , ("articulated_lorry", "๐Ÿš›")
+ , ("truck", "๐Ÿšš")
+ , ("rotating_light", "๐Ÿšจ")
+ , ("police_car", "๐Ÿš“")
+ , ("oncoming_police_car", "๐Ÿš”")
+ , ("fire_engine", "๐Ÿš’")
+ , ("ambulance", "๐Ÿš‘")
+ , ("minibus", "๐Ÿš")
+ , ("bike", "๐Ÿšฒ")
+ , ("aerial_tramway", "๐Ÿšก")
+ , ("suspension_railway", "๐ŸšŸ")
+ , ("mountain_cableway", "๐Ÿš ")
+ , ("tractor", "๐Ÿšœ")
+ , ("barber", "๐Ÿ’ˆ")
+ , ("busstop", "๐Ÿš")
+ , ("ticket", "๐ŸŽซ")
+ , ("vertical_traffic_light", "๐Ÿšฆ")
+ , ("traffic_light", "๐Ÿšฅ")
+ , ("warning", "โš ๏ธ")
+ , ("construction", "๐Ÿšง")
+ , ("beginner", "๐Ÿ”ฐ")
+ , ("fuelpump", "โ›ฝ")
+ , ("izakaya_lantern", "๐Ÿฎ")
+ , ("lantern", "๐Ÿฎ")
+ , ("slot_machine", "๐ŸŽฐ")
+ , ("hotsprings", "โ™จ๏ธ")
+ , ("moyai", "๐Ÿ—ฟ")
+ , ("circus_tent", "๐ŸŽช")
+ , ("performing_arts", "๐ŸŽญ")
+ , ("round_pushpin", "๐Ÿ“")
+ , ("triangular_flag_on_post", "๐Ÿšฉ")
+ , ("jp", "๐Ÿ‡ฏ๐Ÿ‡ต")
+ , ("kr", "๐Ÿ‡ฐ๐Ÿ‡ท")
+ , ("de", "๐Ÿ‡ฉ๐Ÿ‡ช")
+ , ("cn", "๐Ÿ‡จ๐Ÿ‡ณ")
+ , ("us", "๐Ÿ‡บ๐Ÿ‡ธ")
+ , ("fr", "๐Ÿ‡ซ๐Ÿ‡ท")
+ , ("es", "๐Ÿ‡ช๐Ÿ‡ธ")
+ , ("it", "๐Ÿ‡ฎ๐Ÿ‡น")
+ , ("ru", "๐Ÿ‡ท๐Ÿ‡บ")
+ , ("gb", "๐Ÿ‡ฌ๐Ÿ‡ง")
+ , ("uk", "๐Ÿ‡ฌ๐Ÿ‡ง")
+ , ("one", "1๏ธโƒฃ")
+ , ("two", "2๏ธโƒฃ")
+ , ("three", "3๏ธโƒฃ")
+ , ("four", "4๏ธโƒฃ")
+ , ("five", "5๏ธโƒฃ")
+ , ("six", "6๏ธโƒฃ")
+ , ("seven", "7๏ธโƒฃ")
+ , ("eight", "8๏ธโƒฃ")
+ , ("nine", "9๏ธโƒฃ")
+ , ("zero", "0๏ธโƒฃ")
+ , ("keycap_ten", "๐Ÿ”Ÿ")
+ , ("hash", "#๏ธโƒฃ")
+ , ("symbols", "๐Ÿ”ฃ")
+ , ("arrow_up", "โฌ†๏ธ")
+ , ("arrow_down", "โฌ‡๏ธ")
+ , ("arrow_left", "โฌ…๏ธ")
+ , ("arrow_right", "โžก๏ธ")
+ , ("capital_abcd", "๐Ÿ” ")
+ , ("abcd", "๐Ÿ”ก")
+ , ("abc", "๐Ÿ”ค")
+ , ("arrow_upper_right", "โ†—๏ธ")
+ , ("arrow_upper_left", "โ†–๏ธ")
+ , ("arrow_lower_right", "โ†˜๏ธ")
+ , ("arrow_lower_left", "โ†™๏ธ")
+ , ("left_right_arrow", "โ†”๏ธ")
+ , ("arrow_up_down", "โ†•๏ธ")
+ , ("arrows_counterclockwise", "๐Ÿ”„")
+ , ("arrow_backward", "โ—€๏ธ")
+ , ("arrow_forward", "โ–ถ๏ธ")
+ , ("arrow_up_small", "๐Ÿ”ผ")
+ , ("arrow_down_small", "๐Ÿ”ฝ")
+ , ("leftwards_arrow_with_hook", "โ†ฉ๏ธ")
+ , ("arrow_right_hook", "โ†ช๏ธ")
+ , ("information_source", "โ„น๏ธ")
+ , ("rewind", "โช")
+ , ("fast_forward", "โฉ")
+ , ("arrow_double_up", "โซ")
+ , ("arrow_double_down", "โฌ")
+ , ("arrow_heading_down", "โคต๏ธ")
+ , ("arrow_heading_up", "โคด๏ธ")
+ , ("ok", "๐Ÿ†—")
+ , ("twisted_rightwards_arrows", "๐Ÿ”€")
+ , ("repeat", "๐Ÿ”")
+ , ("repeat_one", "๐Ÿ”‚")
+ , ("new", "๐Ÿ†•")
+ , ("up", "๐Ÿ†™")
+ , ("cool", "๐Ÿ†’")
+ , ("free", "๐Ÿ†“")
+ , ("ng", "๐Ÿ†–")
+ , ("signal_strength", "๐Ÿ“ถ")
+ , ("cinema", "๐ŸŽฆ")
+ , ("koko", "๐Ÿˆ")
+ , ("u6307", "๐Ÿˆฏ")
+ , ("u7a7a", "๐Ÿˆณ")
+ , ("u6e80", "๐Ÿˆต")
+ , ("u5408", "๐Ÿˆด")
+ , ("u7981", "๐Ÿˆฒ")
+ , ("ideograph_advantage", "๐Ÿ‰")
+ , ("u5272", "๐Ÿˆน")
+ , ("u55b6", "๐Ÿˆบ")
+ , ("u6709", "๐Ÿˆถ")
+ , ("u7121", "๐Ÿˆš")
+ , ("restroom", "๐Ÿšป")
+ , ("mens", "๐Ÿšน")
+ , ("womens", "๐Ÿšบ")
+ , ("baby_symbol", "๐Ÿšผ")
+ , ("wc", "๐Ÿšพ")
+ , ("potable_water", "๐Ÿšฐ")
+ , ("put_litter_in_its_place", "๐Ÿšฎ")
+ , ("parking", "๐Ÿ…ฟ๏ธ")
+ , ("wheelchair", "โ™ฟ")
+ , ("no_smoking", "๐Ÿšญ")
+ , ("u6708", "๐Ÿˆท๏ธ")
+ , ("u7533", "๐Ÿˆธ")
+ , ("sa", "๐Ÿˆ‚๏ธ")
+ , ("m", "โ“‚๏ธ")
+ , ("passport_control", "๐Ÿ›‚")
+ , ("baggage_claim", "๐Ÿ›„")
+ , ("left_luggage", "๐Ÿ›…")
+ , ("customs", "๐Ÿ›ƒ")
+ , ("accept", "๐Ÿ‰‘")
+ , ("secret", "ใŠ™๏ธ")
+ , ("congratulations", "ใŠ—๏ธ")
+ , ("cl", "๐Ÿ†‘")
+ , ("sos", "๐Ÿ†˜")
+ , ("id", "๐Ÿ†”")
+ , ("no_entry_sign", "๐Ÿšซ")
+ , ("underage", "๐Ÿ”ž")
+ , ("no_mobile_phones", "๐Ÿ“ต")
+ , ("do_not_litter", "๐Ÿšฏ")
+ , ("non-potable_water", "๐Ÿšฑ")
+ , ("no_bicycles", "๐Ÿšณ")
+ , ("no_pedestrians", "๐Ÿšท")
+ , ("children_crossing", "๐Ÿšธ")
+ , ("no_entry", "โ›”")
+ , ("eight_spoked_asterisk", "โœณ๏ธ")
+ , ("sparkle", "โ‡๏ธ")
+ , ("negative_squared_cross_mark", "โŽ")
+ , ("white_check_mark", "โœ…")
+ , ("eight_pointed_black_star", "โœด๏ธ")
+ , ("heart_decoration", "๐Ÿ’Ÿ")
+ , ("vs", "๐Ÿ†š")
+ , ("vibration_mode", "๐Ÿ“ณ")
+ , ("mobile_phone_off", "๐Ÿ“ด")
+ , ("a", "๐Ÿ…ฐ๏ธ")
+ , ("b", "๐Ÿ…ฑ๏ธ")
+ , ("ab", "๐Ÿ†Ž")
+ , ("o2", "๐Ÿ…พ๏ธ")
+ , ("diamond_shape_with_a_dot_inside", "๐Ÿ’ ")
+ , ("loop", "โžฟ")
+ , ("recycle", "โ™ป๏ธ")
+ , ("aries", "โ™ˆ")
+ , ("taurus", "โ™‰")
+ , ("gemini", "โ™Š")
+ , ("cancer", "โ™‹")
+ , ("leo", "โ™Œ")
+ , ("virgo", "โ™")
+ , ("libra", "โ™Ž")
+ , ("scorpius", "โ™")
+ , ("sagittarius", "โ™")
+ , ("capricorn", "โ™‘")
+ , ("aquarius", "โ™’")
+ , ("pisces", "โ™“")
+ , ("ophiuchus", "โ›Ž")
+ , ("six_pointed_star", "๐Ÿ”ฏ")
+ , ("atm", "๐Ÿง")
+ , ("chart", "๐Ÿ’น")
+ , ("heavy_dollar_sign", "๐Ÿ’ฒ")
+ , ("currency_exchange", "๐Ÿ’ฑ")
+ , ("copyright", "ยฉ๏ธ")
+ , ("registered", "ยฎ๏ธ")
+ , ("tm", "โ„ข๏ธ")
+ , ("x", "โŒ")
+ , ("bangbang", "โ€ผ๏ธ")
+ , ("interrobang", "โ‰๏ธ")
+ , ("exclamation", "โ—")
+ , ("heavy_exclamation_mark", "โ—")
+ , ("question", "โ“")
+ , ("grey_exclamation", "โ•")
+ , ("grey_question", "โ”")
+ , ("o", "โญ•")
+ , ("top", "๐Ÿ”")
+ , ("end", "๐Ÿ”š")
+ , ("back", "๐Ÿ”™")
+ , ("on", "๐Ÿ”›")
+ , ("soon", "๐Ÿ”œ")
+ , ("arrows_clockwise", "๐Ÿ”ƒ")
+ , ("clock12", "๐Ÿ•›")
+ , ("clock1230", "๐Ÿ•ง")
+ , ("clock1", "๐Ÿ•")
+ , ("clock130", "๐Ÿ•œ")
+ , ("clock2", "๐Ÿ•‘")
+ , ("clock230", "๐Ÿ•")
+ , ("clock3", "๐Ÿ•’")
+ , ("clock330", "๐Ÿ•ž")
+ , ("clock4", "๐Ÿ•“")
+ , ("clock430", "๐Ÿ•Ÿ")
+ , ("clock5", "๐Ÿ•”")
+ , ("clock530", "๐Ÿ• ")
+ , ("clock6", "๐Ÿ••")
+ , ("clock7", "๐Ÿ•–")
+ , ("clock8", "๐Ÿ•—")
+ , ("clock9", "๐Ÿ•˜")
+ , ("clock10", "๐Ÿ•™")
+ , ("clock11", "๐Ÿ•š")
+ , ("clock630", "๐Ÿ•ก")
+ , ("clock730", "๐Ÿ•ข")
+ , ("clock830", "๐Ÿ•ฃ")
+ , ("clock930", "๐Ÿ•ค")
+ , ("clock1030", "๐Ÿ•ฅ")
+ , ("clock1130", "๐Ÿ•ฆ")
+ , ("heavy_multiplication_x", "โœ–๏ธ")
+ , ("heavy_plus_sign", "โž•")
+ , ("heavy_minus_sign", "โž–")
+ , ("heavy_division_sign", "โž—")
+ , ("spades", "โ™ ๏ธ")
+ , ("hearts", "โ™ฅ๏ธ")
+ , ("clubs", "โ™ฃ๏ธ")
+ , ("diamonds", "โ™ฆ๏ธ")
+ , ("white_flower", "๐Ÿ’ฎ")
+ , ("heavy_check_mark", "โœ”๏ธ")
+ , ("ballot_box_with_check", "โ˜‘๏ธ")
+ , ("radio_button", "๐Ÿ”˜")
+ , ("link", "๐Ÿ”—")
+ , ("curly_loop", "โžฐ")
+ , ("wavy_dash", "ใ€ฐ๏ธ")
+ , ("part_alternation_mark", "ใ€ฝ๏ธ")
+ , ("trident", "๐Ÿ”ฑ")
+ , ("black_medium_square", "โ—ผ๏ธ")
+ , ("white_medium_square", "โ—ป๏ธ")
+ , ("black_medium_small_square", "โ—พ")
+ , ("white_medium_small_square", "โ—ฝ")
+ , ("black_small_square", "โ–ช๏ธ")
+ , ("white_small_square", "โ–ซ๏ธ")
+ , ("small_red_triangle", "๐Ÿ”บ")
+ , ("black_square_button", "๐Ÿ”ฒ")
+ , ("white_square_button", "๐Ÿ”ณ")
+ , ("black_circle", "โšซ")
+ , ("white_circle", "โšช")
+ , ("red_circle", "๐Ÿ”ด")
+ , ("large_blue_circle", "๐Ÿ”ต")
+ , ("small_red_triangle_down", "๐Ÿ”ป")
+ , ("white_large_square", "โฌœ")
+ , ("black_large_square", "โฌ›")
+ , ("large_orange_diamond", "๐Ÿ”ถ")
+ , ("large_blue_diamond", "๐Ÿ”ท")
+ , ("small_orange_diamond", "๐Ÿ”ธ")
+ , ("small_blue_diamond", "๐Ÿ”น")
+ ]
diff --git a/src/Text/Pandoc/Options.hs b/src/Text/Pandoc/Options.hs
index 20c842e0d..b7d268a65 100644
--- a/src/Text/Pandoc/Options.hs
+++ b/src/Text/Pandoc/Options.hs
@@ -105,6 +105,7 @@ data Extension =
| Ext_ignore_line_breaks -- ^ Newlines in paragraphs are ignored
| Ext_literate_haskell -- ^ Enable literate Haskell conventions
| Ext_abbreviations -- ^ PHP markdown extra abbreviation definitions
+ | Ext_emoji -- ^ Support emoji like :smile:
| Ext_auto_identifiers -- ^ Automatic identifiers for headers
| Ext_ascii_identifiers -- ^ ascii-only identifiers for headers
| Ext_header_attributes -- ^ Explicit header attributes {#id .class k=v}
@@ -203,6 +204,7 @@ githubMarkdownExtensions = Set.fromList
, Ext_intraword_underscores
, Ext_strikeout
, Ext_hard_line_breaks
+ , Ext_emoji
, Ext_lists_without_preceding_blankline
, Ext_shortcut_reference_links
]
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
index d73b92fbd..7e811a966 100644
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -39,6 +39,7 @@ import Data.Ord ( comparing )
import Data.Char ( isSpace, isAlphaNum, toLower )
import Data.Maybe
import Text.Pandoc.Definition
+import Text.Pandoc.Emoji (emojis)
import qualified Data.Text as T
import Data.Text (Text)
import qualified Data.Yaml as Yaml
@@ -1467,6 +1468,7 @@ inline = choice [ whitespace
, exampleRef
, smart
, return . B.singleton <$> charRef
+ , emoji
, symbol
, ltSign
] <?> "inline"
@@ -1898,6 +1900,21 @@ rawHtmlInline = do
else not . isTextTag
return $ return $ B.rawInline "html" result
+-- Emoji
+
+emojiChars :: [Char]
+emojiChars = ['a'..'z'] ++ ['0'..'9'] ++ ['_','+','-']
+
+emoji :: MarkdownParser (F Inlines)
+emoji = try $ do
+ guardEnabled Ext_emoji
+ char ':'
+ emojikey <- many1 (oneOf emojiChars)
+ char ':'
+ case M.lookup emojikey emojis of
+ Just s -> return (return (B.str s))
+ Nothing -> mzero
+
-- Citations
cite :: MarkdownParser (F Inlines)
diff --git a/tests/Tests/Readers/Markdown.hs b/tests/Tests/Readers/Markdown.hs
index f6afacb34..366ab7413 100644
--- a/tests/Tests/Readers/Markdown.hs
+++ b/tests/Tests/Readers/Markdown.hs
@@ -185,6 +185,10 @@ tests = [ testGroup "inline code"
"<\n\na>" =?>
para (text "<") <> para (text "a>")
]
+ , testGroup "emoji"
+ [ test markdownGH "emoji symbols" $
+ ":smile: and :+1:" =?> para (text "๐Ÿ˜„ and ๐Ÿ‘")
+ ]
, "unbalanced brackets" =:
"[[[[[[[[[[[[[[[hi" =?> para (text "[[[[[[[[[[[[[[[hi")
, testGroup "backslash escapes"