module Data.HexString where
import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as BS8
import qualified Data.ByteString.Base16 as BS16
import qualified Data.Text as T
import qualified Data.Text.Encoding as TE
data HexString
= HexString !BS.ByteString
deriving ( Show, Eq, Ord )
getBinary :: HexString -> BS.ByteString
getBinary (HexString bs) = bs
setBinary :: BS.ByteString -> HexString
setBinary = HexString
decodeByteString :: BS.ByteString -> HexString
decodeByteString = HexString . fst . BS16.decode
decodeText :: T.Text -> HexString
decodeText = decodeByteString . TE.encodeUtf8
decodeString :: String -> HexString
decodeString = decodeByteString . BS8.pack
encodeByteString :: HexString -> BS.ByteString
encodeByteString = BS16.encode . getBinary
encodeText :: HexString -> T.Text
encodeText = TE.decodeUtf8 . encodeByteString
encodeString :: HexString -> String
encodeString = BS8.unpack . encodeByteString