packages feed

ascii-superset-1.2.6.0: library/ASCII/SupersetConversion.hs

module ASCII.SupersetConversion
  (
    {- * Class -} StringSupersetConversion (..),
    {- * Utilities -} convertRefinedString,
  )
  where

import ASCII.Superset

import {-# source #-} ASCII.Refinement.Internal (convertRefinedString)

import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as BS.Char8
import qualified Data.ByteString.Lazy as LBS
import qualified Data.ByteString.Lazy.Char8 as LBS.Char8
import qualified Data.Char as Unicode
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import qualified Data.Text.Lazy as LT
import qualified Data.Text.Lazy.Encoding as LT

class (StringSuperset a, StringSuperset b) => StringSupersetConversion a b where
    convertStringUnsafe :: a -> b

instance StringSupersetConversion T.Text BS.ByteString where
    convertStringUnsafe = T.encodeUtf8

instance StringSupersetConversion BS.ByteString T.Text where
    convertStringUnsafe = T.decodeUtf8

instance StringSupersetConversion LT.Text LBS.ByteString where
    convertStringUnsafe = LT.encodeUtf8

instance StringSupersetConversion LBS.ByteString LT.Text where
    convertStringUnsafe = LT.decodeUtf8

instance StringSupersetConversion T.Text LT.Text where
    convertStringUnsafe = LT.fromStrict

instance StringSupersetConversion LT.Text T.Text where
    convertStringUnsafe = LT.toStrict

instance StringSupersetConversion BS.ByteString LBS.ByteString where
    convertStringUnsafe = LBS.fromStrict

instance StringSupersetConversion LBS.ByteString BS.ByteString where
    convertStringUnsafe = LBS.toStrict

---

instance StringSupersetConversion T.Text [Unicode.Char] where
    convertStringUnsafe = T.unpack

instance StringSupersetConversion [Unicode.Char] T.Text where
    convertStringUnsafe = T.pack

instance StringSupersetConversion LT.Text [Unicode.Char] where
    convertStringUnsafe = LT.unpack

instance StringSupersetConversion [Unicode.Char] LT.Text where
    convertStringUnsafe = LT.pack

instance StringSupersetConversion BS.ByteString [Unicode.Char] where
    convertStringUnsafe = BS.Char8.unpack

instance StringSupersetConversion [Unicode.Char] BS.ByteString where
    convertStringUnsafe = BS.Char8.pack

instance StringSupersetConversion LBS.ByteString [Unicode.Char] where
    convertStringUnsafe = LBS.Char8.unpack

instance StringSupersetConversion [Unicode.Char] LBS.ByteString where
    convertStringUnsafe = LBS.Char8.pack