module Network.IPFS.Internal.UTF8
( Textable (..)
, stripN
, textToLazyBS
, textShow
) where
import RIO
import qualified RIO.ByteString.Lazy as Lazy
import qualified RIO.Text as Text
class Textable a where
encode :: a -> Either UnicodeException Text
instance Textable ByteString where
encode = decodeUtf8'
instance Textable Lazy.ByteString where
encode = encode . Lazy.toStrict
textToLazyBS :: Text -> Lazy.ByteString
textToLazyBS = Lazy.fromStrict . Text.encodeUtf8
textShow :: Show a => a -> Text
textShow = textDisplay . displayShow
stripN :: Natural -> Text -> Text
stripN n = Text.dropEnd i . Text.drop i
where
i :: Int
i = fromIntegral n