{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module Kurita.Emoji (uncodes, uncode) where

import           Data.Char
import qualified Data.Text as T
import qualified Data.Text.Read as TR

uncodes :: T.Text -> Either String T.Text
uncodes = fmap T.pack . mapM uncode  . T.words

uncode :: T.Text -> Either String Char
uncode t =
  case T.stripPrefix "U+" t of
    Nothing -> fail "No \"U+\" prefix"
    Just n  -> fmap (chr . fst) . TR.hexadecimal $ n