{-# LANGUAGE CPP #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Text.Emoji
( emojis
, emojiFromAlias
, aliasesFromEmoji
, baseEmojis
, zwjEmojis
) where
import Prelude
import qualified Data.Map as M
import Data.Text (Text)
emojiMap :: M.Map Text Text
emojiMap :: Map Text Text
emojiMap = forall k a. Ord k => [(k, a)] -> Map k a
M.fromList [(Text, Text)]
emojis
emojiAliasMap :: M.Map Text [Text]
emojiAliasMap :: Map Text [Text]
emojiAliasMap =
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr (\(Text
alias, Text
s) Map Text [Text]
m -> forall k a.
Ord k =>
(Maybe a -> Maybe a) -> k -> Map k a -> Map k a
M.alter (forall {a}. a -> Maybe [a] -> Maybe [a]
go Text
alias) Text
s Map Text [Text]
m) forall a. Monoid a => a
mempty [(Text, Text)]
emojis
where
go :: a -> Maybe [a] -> Maybe [a]
go a
alias Maybe [a]
Nothing = forall a. a -> Maybe a
Just [a
alias]
go a
alias (Just [a]
as) = forall a. a -> Maybe a
Just (a
aliasforall a. a -> [a] -> [a]
:[a]
as)
emojiFromAlias :: Text -> Maybe Text
emojiFromAlias :: Text -> Maybe Text
emojiFromAlias Text
name = forall k a. Ord k => k -> Map k a -> Maybe a
M.lookup Text
name Map Text Text
emojiMap
aliasesFromEmoji :: Text -> Maybe [Text]
aliasesFromEmoji :: Text -> Maybe [Text]
aliasesFromEmoji Text
s = forall k a. Ord k => k -> Map k a -> Maybe a
M.lookup Text
s Map Text [Text]
emojiAliasMap
emojis :: [(Text, Text)]
baseEmojis :: [Text]
zwjEmojis :: [Text]
#include "emojis.inc"