From c7c766440333cf5a2a1d54fd366e5c9aa9cf780b Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 29 Jul 2019 11:09:21 -0700 Subject: Update emoji list in Text.Pandoc.Emoji. Done using tools/emojis.hs, which uses the list from the gem GitHub uses. Future updates can be done with this tool. Closes #5666. --- tools/emojis.hs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 tools/emojis.hs (limited to 'tools') diff --git a/tools/emojis.hs b/tools/emojis.hs new file mode 100755 index 000000000..9926a9047 --- /dev/null +++ b/tools/emojis.hs @@ -0,0 +1,36 @@ +-- Script to generate the list of emojis in T.P.Emoji.hs. +-- to run: +-- curl https://raw.githubusercontent.com/github/gemoji/master/db/emoji.json -o emoji.json +-- stack script --resolver lts-13.17 --package aeson --package bytestring --package text --package containers tools/emojis.hs < emoji.json + +{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE OverloadedStrings #-} +import Data.Aeson +import qualified Data.ByteString.Lazy as B +import Data.Text (Text) +import Data.Map as M + +data Emoji = Emoji Text [Text] + deriving Show + +instance FromJSON Emoji where + parseJSON = withObject "Emoji" $ \v -> Emoji + <$> v .: "emoji" + <*> v .: "aliases" + +main :: IO () +main = do + bs <- B.getContents + case eitherDecode bs of + Left e -> error e + Right (emoji :: [Emoji]) -> do + let emojis = M.fromList $ + [(alias, txt) | Emoji txt aliases <- emoji, alias <- aliases] + putStrLn $ prettify $ dropWhile (/='[') $ show emojis + +prettify :: String -> String +prettify [] = "" +prettify ('[':xs) = '\n':' ':' ':'[':prettify xs +prettify (']':xs) = '\n':' ':' ':']':prettify xs +prettify (',':'(':xs) = '\n':' ':' ':',':'(':prettify xs +prettify (x:xs) = x:prettify xs -- cgit v1.2.3