git.iko.soy/typeable/pandoc
on 2.8 help sign in
36 lines 1.2 kB history raw
1-- Script to generate the list of emojis in T.P.Emoji.hs.
2-- to run:
3-- curl https://raw.githubusercontent.com/github/gemoji/master/db/emoji.json -o emoji.json
4-- stack script --resolver lts-13.17 --package aeson --package bytestring --package text --package containers tools/emojis.hs < emoji.json
6{-# LANGUAGE ScopedTypeVariables #-}
7{-# LANGUAGE OverloadedStrings #-}
8import Data.Aeson
9import qualified Data.ByteString.Lazy as B
10import Data.Text (Text)
11import Data.Map as M
13data Emoji = Emoji Text [Text]
14 deriving Show
16instance FromJSON Emoji where
17 parseJSON = withObject "Emoji" $ \v -> Emoji
18 <$> v .: "emoji"
19 <*> v .: "aliases"
21main :: IO ()
22main = do
23 bs <- B.getContents
24 case eitherDecode bs of
25 Left e -> error e
26 Right (emoji :: [Emoji]) -> do
27 let emojis = M.fromList $
28 [(alias, txt) | Emoji txt aliases <- emoji, alias <- aliases]
29 putStrLn $ prettify $ dropWhile (/='[') $ show emojis
31prettify :: String -> String
32prettify [] = ""
33prettify ('[':xs) = '\n':' ':' ':'[':prettify xs
34prettify (']':xs) = '\n':' ':' ':']':prettify xs
35prettify (',':'(':xs) = '\n':' ':' ':',':'(':prettify xs
36prettify (x:xs) = x:prettify xs