projects
/
ghc-base.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
4966da6
)
Add a suitable Show instance for TextEncoding (#4273)
author
Simon Marlow
<marlowsd@gmail.com>
Mon, 13 Sep 2010 15:44:59 +0000
(15:44 +0000)
committer
Simon Marlow
<marlowsd@gmail.com>
Mon, 13 Sep 2010 15:44:59 +0000
(15:44 +0000)
GHC/IO/Encoding/CodePage.hs
patch
|
blob
|
history
GHC/IO/Encoding/Iconv.hs
patch
|
blob
|
history
GHC/IO/Encoding/Latin1.hs
patch
|
blob
|
history
GHC/IO/Encoding/Types.hs
patch
|
blob
|
history
GHC/IO/Encoding/UTF16.hs
patch
|
blob
|
history
GHC/IO/Encoding/UTF32.hs
patch
|
blob
|
history
GHC/IO/Encoding/UTF8.hs
patch
|
blob
|
history
diff --git
a/GHC/IO/Encoding/CodePage.hs
b/GHC/IO/Encoding/CodePage.hs
index
906a9d1
..
baf68a1
100644
(file)
--- a/
GHC/IO/Encoding/CodePage.hs
+++ b/
GHC/IO/Encoding/CodePage.hs
@@
-53,11
+53,12
@@
codePageEncoding 1200 = utf16le
codePageEncoding 1201 = utf16be
codePageEncoding 12000 = utf32le
codePageEncoding 12001 = utf32be
codePageEncoding 1201 = utf16be
codePageEncoding 12000 = utf32le
codePageEncoding 12001 = utf32be
-codePageEncoding cp = maybe latin1 buildEncoding (lookup cp codePageMap)
+codePageEncoding cp = maybe latin1 (buildEncoding cp) (lookup cp codePageMap)
-buildEncoding :: CodePageArrays -> TextEncoding
-buildEncoding SingleByteCP {decoderArray = dec, encoderArray = enc}
+buildEncoding :: Word32 -> CodePageArrays -> TextEncoding
+buildEncoding cp SingleByteCP {decoderArray = dec, encoderArray = enc}
= TextEncoding {
= TextEncoding {
+ textEncodingName = "CP" ++ show cp,
mkTextDecoder = return $ simpleCodec
$ decodeFromSingleByte dec
, mkTextEncoder = return $ simpleCodec $ encodeToSingleByte enc
mkTextDecoder = return $ simpleCodec
$ decodeFromSingleByte dec
, mkTextEncoder = return $ simpleCodec $ encodeToSingleByte enc
diff --git
a/GHC/IO/Encoding/Iconv.hs
b/GHC/IO/Encoding/Iconv.hs
index
9a9e8c8
..
1c19b00
100644
(file)
--- a/
GHC/IO/Encoding/Iconv.hs
+++ b/
GHC/IO/Encoding/Iconv.hs
@@
-132,6
+132,7
@@
char_shift | charSize == 2 = 1
mkTextEncoding :: String -> IO TextEncoding
mkTextEncoding charset = do
return (TextEncoding {
mkTextEncoding :: String -> IO TextEncoding
mkTextEncoding charset = do
return (TextEncoding {
+ textEncodingName = charset,
mkTextDecoder = newIConv charset haskellChar iconvDecode,
mkTextEncoder = newIConv haskellChar charset iconvEncode})
mkTextDecoder = newIConv charset haskellChar iconvDecode,
mkTextEncoder = newIConv haskellChar charset iconvEncode})
diff --git
a/GHC/IO/Encoding/Latin1.hs
b/GHC/IO/Encoding/Latin1.hs
index
67a9cd7
..
5bdf608
100644
(file)
--- a/
GHC/IO/Encoding/Latin1.hs
+++ b/
GHC/IO/Encoding/Latin1.hs
@@
-39,7
+39,8
@@
import Data.Maybe
-- Latin1
latin1 :: TextEncoding
-- Latin1
latin1 :: TextEncoding
-latin1 = TextEncoding { mkTextDecoder = latin1_DF,
+latin1 = TextEncoding { textEncodingName = "ISO8859-1",
+ mkTextDecoder = latin1_DF,
mkTextEncoder = latin1_EF }
latin1_DF :: IO (TextDecoder ())
mkTextEncoder = latin1_EF }
latin1_DF :: IO (TextDecoder ())
@@
-61,7
+62,8
@@
latin1_EF =
})
latin1_checked :: TextEncoding
})
latin1_checked :: TextEncoding
-latin1_checked = TextEncoding { mkTextDecoder = latin1_DF,
+latin1_checked = TextEncoding { textEncodingName = "ISO8859-1(checked)",
+ mkTextDecoder = latin1_DF,
mkTextEncoder = latin1_checked_EF }
latin1_checked_EF :: IO (TextEncoder ())
mkTextEncoder = latin1_checked_EF }
latin1_checked_EF :: IO (TextEncoder ())
diff --git
a/GHC/IO/Encoding/Types.hs
b/GHC/IO/Encoding/Types.hs
index
9be6c98
..
640ea88
100644
(file)
--- a/
GHC/IO/Encoding/Types.hs
+++ b/
GHC/IO/Encoding/Types.hs
@@
-22,6
+22,7
@@
module GHC.IO.Encoding.Types (
import GHC.Base
import GHC.Word
import GHC.Base
import GHC.Word
+import GHC.Show
-- import GHC.IO
import GHC.IO.Buffer
-- import GHC.IO
import GHC.IO.Buffer
@@
-84,6
+85,13
@@
type TextEncoder state = BufferCodec CharBufElem Word8 state
-- of bytes. The 'TextEncoding' for UTF-8 is 'utf8'.
data TextEncoding
= forall dstate estate . TextEncoding {
-- of bytes. The 'TextEncoding' for UTF-8 is 'utf8'.
data TextEncoding
= forall dstate estate . TextEncoding {
+ textEncodingName :: String,
+ -- ^ a string that can be passed to 'mkTextEncoding' to
+ -- create an equivalent 'TextEncoding'.
mkTextDecoder :: IO (TextDecoder dstate),
mkTextEncoder :: IO (TextEncoder estate)
}
mkTextDecoder :: IO (TextDecoder dstate),
mkTextEncoder :: IO (TextEncoder estate)
}
+
+instance Show TextEncoding where
+ -- | Returns the value of 'textEncodingName'
+ show te = textEncodingName te
diff --git
a/GHC/IO/Encoding/UTF16.hs
b/GHC/IO/Encoding/UTF16.hs
index
1f27bb1
..
bb38a79
100644
(file)
--- a/
GHC/IO/Encoding/UTF16.hs
+++ b/
GHC/IO/Encoding/UTF16.hs
@@
-60,7
+60,8
@@
puts s = do withCStringLen (s++"\n") $ \(p,len) ->
-- The UTF-16 codec: either UTF16BE or UTF16LE with a BOM
utf16 :: TextEncoding
-- The UTF-16 codec: either UTF16BE or UTF16LE with a BOM
utf16 :: TextEncoding
-utf16 = TextEncoding { mkTextDecoder = utf16_DF,
+utf16 = TextEncoding { textEncodingName = "UTF-16",
+ mkTextDecoder = utf16_DF,
mkTextEncoder = utf16_EF }
utf16_DF :: IO (TextDecoder (Maybe DecodeBuffer))
mkTextEncoder = utf16_EF }
utf16_DF :: IO (TextDecoder (Maybe DecodeBuffer))
@@
-139,7
+140,8
@@
bom2 = bomL
-- UTF16LE and UTF16BE
utf16be :: TextEncoding
-- UTF16LE and UTF16BE
utf16be :: TextEncoding
-utf16be = TextEncoding { mkTextDecoder = utf16be_DF,
+utf16be = TextEncoding { textEncodingName = "UTF-16BE",
+ mkTextDecoder = utf16be_DF,
mkTextEncoder = utf16be_EF }
utf16be_DF :: IO (TextDecoder ())
mkTextEncoder = utf16be_EF }
utf16be_DF :: IO (TextDecoder ())
@@
-161,7
+163,8
@@
utf16be_EF =
})
utf16le :: TextEncoding
})
utf16le :: TextEncoding
-utf16le = TextEncoding { mkTextDecoder = utf16le_DF,
+utf16le = TextEncoding { textEncodingName = "UTF16-LE",
+ mkTextDecoder = utf16le_DF,
mkTextEncoder = utf16le_EF }
utf16le_DF :: IO (TextDecoder ())
mkTextEncoder = utf16le_EF }
utf16le_DF :: IO (TextDecoder ())
diff --git
a/GHC/IO/Encoding/UTF32.hs
b/GHC/IO/Encoding/UTF32.hs
index
e384abd
..
685bdaf
100644
(file)
--- a/
GHC/IO/Encoding/UTF32.hs
+++ b/
GHC/IO/Encoding/UTF32.hs
@@
-48,7
+48,8
@@
import GHC.IORef
-- The UTF-32 codec: either UTF-32BE or UTF-32LE with a BOM
utf32 :: TextEncoding
-- The UTF-32 codec: either UTF-32BE or UTF-32LE with a BOM
utf32 :: TextEncoding
-utf32 = TextEncoding { mkTextDecoder = utf32_DF,
+utf32 = TextEncoding { textEncodingName = "UTF-32",
+ mkTextDecoder = utf32_DF,
mkTextEncoder = utf32_EF }
utf32_DF :: IO (TextDecoder (Maybe DecodeBuffer))
mkTextEncoder = utf32_EF }
utf32_DF :: IO (TextDecoder (Maybe DecodeBuffer))
@@
-130,7
+131,8
@@
utf32_native_encode = utf32be_encode
-- UTF32LE and UTF32BE
utf32be :: TextEncoding
-- UTF32LE and UTF32BE
utf32be :: TextEncoding
-utf32be = TextEncoding { mkTextDecoder = utf32be_DF,
+utf32be = TextEncoding { textEncodingName = "UTF-32BE",
+ mkTextDecoder = utf32be_DF,
mkTextEncoder = utf32be_EF }
utf32be_DF :: IO (TextDecoder ())
mkTextEncoder = utf32be_EF }
utf32be_DF :: IO (TextDecoder ())
@@
-153,7
+155,8
@@
utf32be_EF =
utf32le :: TextEncoding
utf32le :: TextEncoding
-utf32le = TextEncoding { mkTextDecoder = utf32le_DF,
+utf32le = TextEncoding { textEncodingName = "UTF-32LE",
+ mkTextDecoder = utf32le_DF,
mkTextEncoder = utf32le_EF }
utf32le_DF :: IO (TextDecoder ())
mkTextEncoder = utf32le_EF }
utf32le_DF :: IO (TextDecoder ())
diff --git
a/GHC/IO/Encoding/UTF8.hs
b/GHC/IO/Encoding/UTF8.hs
index
420bf48
..
1cf8092
100644
(file)
--- a/
GHC/IO/Encoding/UTF8.hs
+++ b/
GHC/IO/Encoding/UTF8.hs
@@
-36,7
+36,8
@@
import Data.Bits
import Data.Maybe
utf8 :: TextEncoding
import Data.Maybe
utf8 :: TextEncoding
-utf8 = TextEncoding { mkTextDecoder = utf8_DF,
+utf8 = TextEncoding { textEncodingName = "UTF-8",
+ mkTextDecoder = utf8_DF,
mkTextEncoder = utf8_EF }
utf8_DF :: IO (TextDecoder ())
mkTextEncoder = utf8_EF }
utf8_DF :: IO (TextDecoder ())
@@
-58,7
+59,8
@@
utf8_EF =
})
utf8_bom :: TextEncoding
})
utf8_bom :: TextEncoding
-utf8_bom = TextEncoding { mkTextDecoder = utf8_bom_DF,
+utf8_bom = TextEncoding { textEncodingName = "UTF-8BOM",
+ mkTextDecoder = utf8_bom_DF,
mkTextEncoder = utf8_bom_EF }
utf8_bom_DF :: IO (TextDecoder Bool)
mkTextEncoder = utf8_bom_EF }
utf8_bom_DF :: IO (TextDecoder Bool)