From ece4c7e788d1e19c1242c9a1898ae662dfa18298 Mon Sep 17 00:00:00 2001 From: Henning Guenther Date: Sun, 26 Aug 2007 18:51:25 -0700 Subject: [PATCH] Added recode helper functions darcs-hash:20070827015125-a4fee-4be7dd71426674c5896aa309aa7c2e502a08a362 --- Data/Encoding.hs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Data/Encoding.hs b/Data/Encoding.hs index 1b45358..dd9cbe5 100644 --- a/Data/Encoding.hs +++ b/Data/Encoding.hs @@ -2,11 +2,15 @@ module Data.Encoding (Encoding(..) ,EncodingException(..) ,DecodingException(..) + ,recode + ,recodeLazy ,DynEncoding() ,encodingFromString ) where +import Data.ByteString (ByteString) +import qualified Data.ByteString.Lazy as Lazy (ByteString) import Data.Encoding.Base import Data.Encoding.ASCII import Data.Encoding.UTF8 @@ -50,6 +54,13 @@ instance Encoding DynEncoding where decodeLazy (DynEncoding enc) = decodeLazy enc decodable (DynEncoding enc) = decodable enc +-- | This decodes a string from one encoding and encodes it into another. +recode :: (Encoding from,Encoding to) => from -> to -> ByteString -> ByteString +recode enc_f enc_t bs = encode enc_t (decode enc_f bs) + +recodeLazy :: (Encoding from,Encoding to) => from -> to -> Lazy.ByteString -> Lazy.ByteString +recodeLazy enc_f enc_t bs = encodeLazy enc_t (decodeLazy enc_f bs) + -- | Takes the name of an encoding and creates a dynamic encoding from it. encodingFromString :: String -> DynEncoding encodingFromString "ASCII" = DynEncoding ASCII