From 0a6aaf5e1b60031b175ff81fa61f5059d63a75d8 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Fri, 13 Nov 2015 12:06:39 -0800 Subject: Added `emoji` extension to Markdown. This is enabled by default in `markdown_github`. Added `Ext_emoji` to `Extension` in `Text.Pandoc.Options` (API change). Closes #2523. --- src/Text/Pandoc/Emoji.hs | 905 ++++++++++++++++++++++++++++++++++++ src/Text/Pandoc/Options.hs | 2 + src/Text/Pandoc/Readers/Markdown.hs | 17 + 3 files changed, 924 insertions(+) create mode 100644 src/Text/Pandoc/Emoji.hs (limited to 'src/Text/Pandoc') 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 + +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 + 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) -- cgit v1.2.3