The OpenMoji emoji dataset for use in Haskell programs.
For emoji fonts, images, and spritesheets, please consult the documentation at openmoji.org.
Use nix-thunk to update the pinned version of openmoji and then use the generator script to produce a new Data.hs
file:
nix-thunk update ./openmoji
./gen.sh
Versions of this package should correspond to the OpenMoji version number used to generate the data.
> {-# Language LambdaCase #-}
> {-# Language OverloadedStrings #-}
>
> import Control.Monad
> import Data.Map (Map)
> import qualified Data.Map as Map
> import Data.Text (Text)
> import qualified Data.Text as T
> import System.Environment
> import Text.Emoji (emojiFromAlias)
> import Text.Emoji.OpenMoji.Data
> import Text.Emoji.OpenMoji.Types
>
> emojiMap :: Map Text OpenMoji
> emojiMap = Map.fromList $ map (\x -> (_openMoji_emoji x, x)) openmojis
>
> main :: IO ()
> main = do
> requestedAliases <- getArgs
> when (null requestedAliases) $
> putStrLn "Please search for at least one emoji alias (e.g., \"bricks\")"
> forM_ requestedAliases $ \alias ->
> case (\e -> Map.lookup e emojiMap) =<< emojiFromAlias (T.pack alias) of
> Nothing -> putStrLn $ "Results for '" <> alias <> "': None"
> Just openmoji -> do
> putStrLn $ "Results for '" <> alias <> "':"
> printOpenMojiInfo openmoji
>
> versionedSvg :: Text -> Text -> Text
> versionedSvg rev hex = mconcat
> [ "https://raw.githubusercontent.com/hfg-gmuend/openmoji/"
> , rev
> , "/color/svg/"
> , hex
> , ".svg"
> ]
>
> pinnedRevision :: Text
> pinnedRevision = "4a80b536eb62a78822548a2aa371426f912d7e9d" -- v13
>
> printOpenMojiInfo :: OpenMoji -> IO ()
> printOpenMojiInfo o = putStrLn $ T.unpack $ T.unlines
> [ "Emoji: " <> _openMoji_emoji o
> , "Hexcode: " <> _openMoji_hexcode o
> , "Annotation: " <> _openMoji_annotation o
> , "Group: " <> _openMoji_group o
> , "Sub-Group: " <> _openMoji_subgroups o
> , "Tags: " <> T.intercalate ", " (_openMoji_tags o)
> , "SVG: " <> versionedSvg pinnedRevision (_openMoji_hexcode o)
> ]
This program will do something like the following:
Results for 'bricks':
Emoji: 🧱
Hexcode: 1F9F1
Annotation: brick
Group: travel-places
Sub-Group: place-building
Tags: bricks, clay, mortar, wall
SVG: https://raw.githubusercontent.com/hfg-gmuend/openmoji/4a80b536eb62a78822548a2aa371426f912d7e9d/color/svg/1F9F1.svg
Results for 'pilot':
Emoji: 🧑✈️
Hexcode: 1F9D1-200D-2708-FE0F
Annotation: pilot
Group: people-body
Sub-Group: person-role
Tags: plane
SVG: https://raw.githubusercontent.com/hfg-gmuend/openmoji/4a80b536eb62a78822548a2aa371426f912d7e9d/color/svg/1F9D1-200D-2708-FE0F.svg
All emojis designed by OpenMoji – the open-source emoji and icon project. License: CC BY-SA 4.0