-- | Module to display positive integral values as strings module TextShow.Data.Integral.Tibetan ( builderBo , showBo) where import qualified Data.Text.Lazy as TL import TextShow -- | Display positive integer as a `String` -- -- > λ > showBo 312 -- > Just "༣༡༢" showBo :: Integer -> Maybe String showBo = fmap toString . builderBo -- | show a positive intgeger as text, return `Nothing` if that doesn't work builderBo :: (Integral a) => a -> Maybe Builder builderBo int | int >= 0 = Just . fromLazyText $ foldr (.) id (zipWith TL.replace (map showT [0..9]) ["༠","༡","༢","༣","༤","༥","༦","༧","༨","༩"]) (showT (fromIntegral int :: Integer)) | otherwise = Nothing showT = TL.pack . show