-- |
--  Module:     Data.Text.ICU.Translit
--  License:    BSD-style
--  Maintainer: me@lelf.lu
-- 
-- This module provides the bindings to the transliteration features
-- by the ICU (International Components for Unicode) library.
-- 
-- >>> IO.putStrLn $ transliterate (trans "name-any; ru") "\\N{RABBIT FACE} Nu pogodi!"
-- 🐰 Ну погоди!
-- 
-- >>> IO.putStrLn $ transliterate (trans "nl-title") "gelderse ijssel"
-- Gelderse IJssel
-- 
-- >>> IO.putStrLn $ transliterate (trans "ja") "Amsterdam"
-- アムステルダム
-- 
-- More information about the rules is
-- <http://userguide.icu-project.org/transforms/general here>.



module Data.Text.ICU.Translit
    (IO.Transliterator, trans, transliterate) where

import qualified Data.Text.ICU.Translit.Internal as IO
import System.IO.Unsafe
import Data.Text


-- | Construct new transliterator by name. Will throw an error if
-- there is no such transliterator
trans :: Text -> IO.Transliterator
trans t = unsafePerformIO $ IO.transliterator t


-- | Transliterate the text using the transliterator
transliterate :: IO.Transliterator -> Text -> Text
transliterate tr txt = unsafePerformIO $ IO.transliterate tr txt