{-# LANGUAGE OverloadedStrings #-}

--------------------------------------------------------------------
-- |
-- Module    : Data.Ruby.Marshal.Encoding
-- Copyright : (c) Philip Cunningham, 2015
-- License   : MIT
--
-- Maintainer:  hello@filib.io
-- Stability :  experimental
-- Portability: portable
--
-- Ruby encoding types.
--
--------------------------------------------------------------------

module Data.Ruby.Marshal.Encoding (
    -- * The @RubyStringEncoding@ type
    fromEnc
  , toEnc
  , RubyStringEncoding(..)
) where

import qualified Data.ByteString as BS

-- | ADT representing all supported Ruby encodings.
data RubyStringEncoding = ASCII_8BIT
               | Big5
               | Big5_HKSCS
               | Big5_UAO
               | CP50220
               | CP50221
               | CP51932
               | CP850
               | CP852
               | CP855
               | CP949
               | CP950
               | CP951
               | EUC_JP
               | EUC_JP_2004
               | EUC_KR
               | EUC_TW
               | Emacs_Mule
               | EucJP_ms
               | GB12345
               | GB18030
               | GB1988
               | GB2312
               | GBK
               | IBM437
               | IBM737
               | IBM775
               | IBM852
               | IBM855
               | IBM857
               | IBM860
               | IBM861
               | IBM862
               | IBM863
               | IBM864
               | IBM865
               | IBM866
               | IBM869
               | ISO_2022_JP
               | ISO_2022_JP_2
               | ISO_2022_JP_KDDI
               | ISO_8859_1
               | ISO_8859_10
               | ISO_8859_11
               | ISO_8859_13
               | ISO_8859_14
               | ISO_8859_15
               | ISO_8859_16
               | ISO_8859_2
               | ISO_8859_3
               | ISO_8859_4
               | ISO_8859_5
               | ISO_8859_6
               | ISO_8859_7
               | ISO_8859_8
               | ISO_8859_9
               | KOI8_R
               | KOI8_U
               | MacCentEuro
               | MacCroatian
               | MacCyrillic
               | MacGreek
               | MacIceland
               | MacJapanese
               | MacRoman
               | MacRomania
               | MacThai
               | MacTurkish
               | MacUkraine
               | SJIS_DoCoMo
               | SJIS_KDDI
               | SJIS_SoftBank
               | Shift_JIS
               | Stateless_ISO_2022_JP
               | Stateless_ISO_2022_JP_KDDI
               | TIS_620
               | US_ASCII
               | UTF8_DoCoMo
               | UTF8_KDDI
               | UTF8_MAC
               | UTF8_SoftBank
               | UTF_16
               | UTF_16BE
               | UTF_16LE
               | UTF_32
               | UTF_32BE
               | UTF_32LE
               | UTF_7
               | UTF_8
               | Windows_1250
               | Windows_1251
               | Windows_1252
               | Windows_1253
               | Windows_1254
               | Windows_1255
               | Windows_1256
               | Windows_1257
               | Windows_1258
               | Windows_31J
               | Windows_874
               | UnsupportedEncoding
               deriving (RubyStringEncoding -> RubyStringEncoding -> Bool
(RubyStringEncoding -> RubyStringEncoding -> Bool)
-> (RubyStringEncoding -> RubyStringEncoding -> Bool)
-> Eq RubyStringEncoding
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RubyStringEncoding -> RubyStringEncoding -> Bool
$c/= :: RubyStringEncoding -> RubyStringEncoding -> Bool
== :: RubyStringEncoding -> RubyStringEncoding -> Bool
$c== :: RubyStringEncoding -> RubyStringEncoding -> Bool
Eq, Eq RubyStringEncoding
Eq RubyStringEncoding
-> (RubyStringEncoding -> RubyStringEncoding -> Ordering)
-> (RubyStringEncoding -> RubyStringEncoding -> Bool)
-> (RubyStringEncoding -> RubyStringEncoding -> Bool)
-> (RubyStringEncoding -> RubyStringEncoding -> Bool)
-> (RubyStringEncoding -> RubyStringEncoding -> Bool)
-> (RubyStringEncoding -> RubyStringEncoding -> RubyStringEncoding)
-> (RubyStringEncoding -> RubyStringEncoding -> RubyStringEncoding)
-> Ord RubyStringEncoding
RubyStringEncoding -> RubyStringEncoding -> Bool
RubyStringEncoding -> RubyStringEncoding -> Ordering
RubyStringEncoding -> RubyStringEncoding -> RubyStringEncoding
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: RubyStringEncoding -> RubyStringEncoding -> RubyStringEncoding
$cmin :: RubyStringEncoding -> RubyStringEncoding -> RubyStringEncoding
max :: RubyStringEncoding -> RubyStringEncoding -> RubyStringEncoding
$cmax :: RubyStringEncoding -> RubyStringEncoding -> RubyStringEncoding
>= :: RubyStringEncoding -> RubyStringEncoding -> Bool
$c>= :: RubyStringEncoding -> RubyStringEncoding -> Bool
> :: RubyStringEncoding -> RubyStringEncoding -> Bool
$c> :: RubyStringEncoding -> RubyStringEncoding -> Bool
<= :: RubyStringEncoding -> RubyStringEncoding -> Bool
$c<= :: RubyStringEncoding -> RubyStringEncoding -> Bool
< :: RubyStringEncoding -> RubyStringEncoding -> Bool
$c< :: RubyStringEncoding -> RubyStringEncoding -> Bool
compare :: RubyStringEncoding -> RubyStringEncoding -> Ordering
$ccompare :: RubyStringEncoding -> RubyStringEncoding -> Ordering
$cp1Ord :: Eq RubyStringEncoding
Ord, Int -> RubyStringEncoding -> ShowS
[RubyStringEncoding] -> ShowS
RubyStringEncoding -> String
(Int -> RubyStringEncoding -> ShowS)
-> (RubyStringEncoding -> String)
-> ([RubyStringEncoding] -> ShowS)
-> Show RubyStringEncoding
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RubyStringEncoding] -> ShowS
$cshowList :: [RubyStringEncoding] -> ShowS
show :: RubyStringEncoding -> String
$cshow :: RubyStringEncoding -> String
showsPrec :: Int -> RubyStringEncoding -> ShowS
$cshowsPrec :: Int -> RubyStringEncoding -> ShowS
Show)

-- | Lifts encoding strings into encoding ADT.
toEnc :: BS.ByteString -> RubyStringEncoding
toEnc :: ByteString -> RubyStringEncoding
toEnc ByteString
"ASCII-8BIT"                 = RubyStringEncoding
ASCII_8BIT
toEnc ByteString
"UTF-8"                      = RubyStringEncoding
UTF_8
toEnc ByteString
"US-ASCII"                   = RubyStringEncoding
US_ASCII
toEnc ByteString
"Big5"                       = RubyStringEncoding
Big5
toEnc ByteString
"Big5-HKSCS"                 = RubyStringEncoding
Big5_HKSCS
toEnc ByteString
"Big5-UAO"                   = RubyStringEncoding
Big5_UAO
toEnc ByteString
"CP949"                      = RubyStringEncoding
CP949
toEnc ByteString
"Emacs-Mule"                 = RubyStringEncoding
Emacs_Mule
toEnc ByteString
"EUC-JP"                     = RubyStringEncoding
EUC_JP
toEnc ByteString
"EUC-KR"                     = RubyStringEncoding
EUC_KR
toEnc ByteString
"EUC-TW"                     = RubyStringEncoding
EUC_TW
toEnc ByteString
"GB18030"                    = RubyStringEncoding
GB18030
toEnc ByteString
"GBK"                        = RubyStringEncoding
GBK
toEnc ByteString
"ISO-8859-1"                 = RubyStringEncoding
ISO_8859_1
toEnc ByteString
"ISO-8859-2"                 = RubyStringEncoding
ISO_8859_2
toEnc ByteString
"ISO-8859-3"                 = RubyStringEncoding
ISO_8859_3
toEnc ByteString
"ISO-8859-4"                 = RubyStringEncoding
ISO_8859_4
toEnc ByteString
"ISO-8859-5"                 = RubyStringEncoding
ISO_8859_5
toEnc ByteString
"ISO-8859-6"                 = RubyStringEncoding
ISO_8859_6
toEnc ByteString
"ISO-8859-7"                 = RubyStringEncoding
ISO_8859_7
toEnc ByteString
"ISO-8859-8"                 = RubyStringEncoding
ISO_8859_8
toEnc ByteString
"ISO-8859-9"                 = RubyStringEncoding
ISO_8859_9
toEnc ByteString
"ISO-8859-10"                = RubyStringEncoding
ISO_8859_10
toEnc ByteString
"ISO-8859-11"                = RubyStringEncoding
ISO_8859_11
toEnc ByteString
"ISO-8859-13"                = RubyStringEncoding
ISO_8859_13
toEnc ByteString
"ISO-8859-14"                = RubyStringEncoding
ISO_8859_14
toEnc ByteString
"ISO-8859-15"                = RubyStringEncoding
ISO_8859_15
toEnc ByteString
"ISO-8859-16"                = RubyStringEncoding
ISO_8859_16
toEnc ByteString
"KOI8-R"                     = RubyStringEncoding
KOI8_R
toEnc ByteString
"KOI8-U"                     = RubyStringEncoding
KOI8_U
toEnc ByteString
"Shift_JIS"                  = RubyStringEncoding
Shift_JIS
toEnc ByteString
"UTF-16BE"                   = RubyStringEncoding
UTF_16BE
toEnc ByteString
"UTF-16LE"                   = RubyStringEncoding
UTF_16LE
toEnc ByteString
"UTF-32BE"                   = RubyStringEncoding
UTF_32BE
toEnc ByteString
"UTF-32LE"                   = RubyStringEncoding
UTF_32LE
toEnc ByteString
"Windows-31J"                = RubyStringEncoding
Windows_31J
toEnc ByteString
"Windows-1251"               = RubyStringEncoding
Windows_1251
toEnc ByteString
"IBM437"                     = RubyStringEncoding
IBM437
toEnc ByteString
"IBM737"                     = RubyStringEncoding
IBM737
toEnc ByteString
"IBM775"                     = RubyStringEncoding
IBM775
toEnc ByteString
"CP850"                      = RubyStringEncoding
CP850
toEnc ByteString
"IBM852"                     = RubyStringEncoding
IBM852
toEnc ByteString
"CP852"                      = RubyStringEncoding
CP852
toEnc ByteString
"IBM855"                     = RubyStringEncoding
IBM855
toEnc ByteString
"CP855"                      = RubyStringEncoding
CP855
toEnc ByteString
"IBM857"                     = RubyStringEncoding
IBM857
toEnc ByteString
"IBM860"                     = RubyStringEncoding
IBM860
toEnc ByteString
"IBM861"                     = RubyStringEncoding
IBM861
toEnc ByteString
"IBM862"                     = RubyStringEncoding
IBM862
toEnc ByteString
"IBM863"                     = RubyStringEncoding
IBM863
toEnc ByteString
"IBM864"                     = RubyStringEncoding
IBM864
toEnc ByteString
"IBM865"                     = RubyStringEncoding
IBM865
toEnc ByteString
"IBM866"                     = RubyStringEncoding
IBM866
toEnc ByteString
"IBM869"                     = RubyStringEncoding
IBM869
toEnc ByteString
"Windows-1258"               = RubyStringEncoding
Windows_1258
toEnc ByteString
"GB1988"                     = RubyStringEncoding
GB1988
toEnc ByteString
"macCentEuro"                = RubyStringEncoding
MacCentEuro
toEnc ByteString
"macCroatian"                = RubyStringEncoding
MacCroatian
toEnc ByteString
"macCyrillic"                = RubyStringEncoding
MacCyrillic
toEnc ByteString
"macGreek"                   = RubyStringEncoding
MacGreek
toEnc ByteString
"macIceland"                 = RubyStringEncoding
MacIceland
toEnc ByteString
"macRoman"                   = RubyStringEncoding
MacRoman
toEnc ByteString
"macRomania"                 = RubyStringEncoding
MacRomania
toEnc ByteString
"macThai"                    = RubyStringEncoding
MacThai
toEnc ByteString
"macTurkish"                 = RubyStringEncoding
MacTurkish
toEnc ByteString
"macUkraine"                 = RubyStringEncoding
MacUkraine
toEnc ByteString
"CP950"                      = RubyStringEncoding
CP950
toEnc ByteString
"CP951"                      = RubyStringEncoding
CP951
toEnc ByteString
"stateless-ISO-2022-JP"      = RubyStringEncoding
Stateless_ISO_2022_JP
toEnc ByteString
"eucJP-ms"                   = RubyStringEncoding
EucJP_ms
toEnc ByteString
"CP51932"                    = RubyStringEncoding
CP51932
toEnc ByteString
"EUC-JP-2004"                = RubyStringEncoding
EUC_JP_2004
toEnc ByteString
"GB2312"                     = RubyStringEncoding
GB2312
toEnc ByteString
"GB12345"                    = RubyStringEncoding
GB12345
toEnc ByteString
"ISO-2022-JP"                = RubyStringEncoding
ISO_2022_JP
toEnc ByteString
"ISO-2022-JP-2"              = RubyStringEncoding
ISO_2022_JP_2
toEnc ByteString
"CP50220"                    = RubyStringEncoding
CP50220
toEnc ByteString
"CP50221"                    = RubyStringEncoding
CP50221
toEnc ByteString
"Windows-1252"               = RubyStringEncoding
Windows_1252
toEnc ByteString
"Windows-1250"               = RubyStringEncoding
Windows_1250
toEnc ByteString
"Windows-1256"               = RubyStringEncoding
Windows_1256
toEnc ByteString
"Windows-1253"               = RubyStringEncoding
Windows_1253
toEnc ByteString
"Windows-1255"               = RubyStringEncoding
Windows_1255
toEnc ByteString
"Windows-1254"               = RubyStringEncoding
Windows_1254
toEnc ByteString
"TIS-620"                    = RubyStringEncoding
TIS_620
toEnc ByteString
"Windows-874"                = RubyStringEncoding
Windows_874
toEnc ByteString
"Windows-1257"               = RubyStringEncoding
Windows_1257
toEnc ByteString
"MacJapanese"                = RubyStringEncoding
MacJapanese
toEnc ByteString
"UTF-7"                      = RubyStringEncoding
UTF_7
toEnc ByteString
"UTF8-MAC"                   = RubyStringEncoding
UTF8_MAC
toEnc ByteString
"UTF-16"                     = RubyStringEncoding
UTF_16
toEnc ByteString
"UTF-32"                     = RubyStringEncoding
UTF_32
toEnc ByteString
"UTF8-DoCoMo"                = RubyStringEncoding
UTF8_DoCoMo
toEnc ByteString
"SJIS-DoCoMo"                = RubyStringEncoding
SJIS_DoCoMo
toEnc ByteString
"UTF8-KDDI"                  = RubyStringEncoding
UTF8_KDDI
toEnc ByteString
"SJIS-KDDI"                  = RubyStringEncoding
SJIS_KDDI
toEnc ByteString
"ISO-2022-JP-KDDI"           = RubyStringEncoding
ISO_2022_JP_KDDI
toEnc ByteString
"stateless-ISO-2022-JP-KDDI" = RubyStringEncoding
Stateless_ISO_2022_JP_KDDI
toEnc ByteString
"UTF8-SoftBank"              = RubyStringEncoding
UTF8_SoftBank
toEnc ByteString
"SJIS-SoftBank"              = RubyStringEncoding
SJIS_SoftBank
toEnc ByteString
_                            = RubyStringEncoding
UnsupportedEncoding

-- | Lowers encoding ADT into an encoding string.
fromEnc :: RubyStringEncoding -> BS.ByteString
fromEnc :: RubyStringEncoding -> ByteString
fromEnc RubyStringEncoding
ASCII_8BIT                 = ByteString
"ASCII-8BIT"
fromEnc RubyStringEncoding
UTF_8                      = ByteString
"UTF-8"
fromEnc RubyStringEncoding
US_ASCII                   = ByteString
"US-ASCII"
fromEnc RubyStringEncoding
Big5                       = ByteString
"Big5"
fromEnc RubyStringEncoding
Big5_HKSCS                 = ByteString
"Big5-HKSCS"
fromEnc RubyStringEncoding
Big5_UAO                   = ByteString
"Big5-UAO"
fromEnc RubyStringEncoding
CP949                      = ByteString
"CP949"
fromEnc RubyStringEncoding
Emacs_Mule                 = ByteString
"Emacs-Mule"
fromEnc RubyStringEncoding
EUC_JP                     = ByteString
"EUC-JP"
fromEnc RubyStringEncoding
EUC_KR                     = ByteString
"EUC-KR"
fromEnc RubyStringEncoding
EUC_TW                     = ByteString
"EUC-TW"
fromEnc RubyStringEncoding
GB18030                    = ByteString
"GB18030"
fromEnc RubyStringEncoding
GBK                        = ByteString
"GBK"
fromEnc RubyStringEncoding
ISO_8859_1                 = ByteString
"ISO-8859-1"
fromEnc RubyStringEncoding
ISO_8859_2                 = ByteString
"ISO-8859-2"
fromEnc RubyStringEncoding
ISO_8859_3                 = ByteString
"ISO-8859-3"
fromEnc RubyStringEncoding
ISO_8859_4                 = ByteString
"ISO-8859-4"
fromEnc RubyStringEncoding
ISO_8859_5                 = ByteString
"ISO-8859-5"
fromEnc RubyStringEncoding
ISO_8859_6                 = ByteString
"ISO-8859-6"
fromEnc RubyStringEncoding
ISO_8859_7                 = ByteString
"ISO-8859-7"
fromEnc RubyStringEncoding
ISO_8859_8                 = ByteString
"ISO-8859-8"
fromEnc RubyStringEncoding
ISO_8859_9                 = ByteString
"ISO-8859-9"
fromEnc RubyStringEncoding
ISO_8859_10                = ByteString
"ISO-8859-10"
fromEnc RubyStringEncoding
ISO_8859_11                = ByteString
"ISO-8859-11"
fromEnc RubyStringEncoding
ISO_8859_13                = ByteString
"ISO-8859-13"
fromEnc RubyStringEncoding
ISO_8859_14                = ByteString
"ISO-8859-14"
fromEnc RubyStringEncoding
ISO_8859_15                = ByteString
"ISO-8859-15"
fromEnc RubyStringEncoding
ISO_8859_16                = ByteString
"ISO-8859-16"
fromEnc RubyStringEncoding
KOI8_R                     = ByteString
"KOI8-R"
fromEnc RubyStringEncoding
KOI8_U                     = ByteString
"KOI8-U"
fromEnc RubyStringEncoding
Shift_JIS                  = ByteString
"Shift_JIS"
fromEnc RubyStringEncoding
UTF_16BE                   = ByteString
"UTF-16BE"
fromEnc RubyStringEncoding
UTF_16LE                   = ByteString
"UTF-16LE"
fromEnc RubyStringEncoding
UTF_32BE                   = ByteString
"UTF-32BE"
fromEnc RubyStringEncoding
UTF_32LE                   = ByteString
"UTF-32LE"
fromEnc RubyStringEncoding
Windows_31J                = ByteString
"Windows-31J"
fromEnc RubyStringEncoding
Windows_1251               = ByteString
"Windows-1251"
fromEnc RubyStringEncoding
IBM437                     = ByteString
"IBM437"
fromEnc RubyStringEncoding
IBM737                     = ByteString
"IBM737"
fromEnc RubyStringEncoding
IBM775                     = ByteString
"IBM775"
fromEnc RubyStringEncoding
CP850                      = ByteString
"CP850"
fromEnc RubyStringEncoding
IBM852                     = ByteString
"IBM852"
fromEnc RubyStringEncoding
CP852                      = ByteString
"CP852"
fromEnc RubyStringEncoding
IBM855                     = ByteString
"IBM855"
fromEnc RubyStringEncoding
CP855                      = ByteString
"CP855"
fromEnc RubyStringEncoding
IBM857                     = ByteString
"IBM857"
fromEnc RubyStringEncoding
IBM860                     = ByteString
"IBM860"
fromEnc RubyStringEncoding
IBM861                     = ByteString
"IBM861"
fromEnc RubyStringEncoding
IBM862                     = ByteString
"IBM862"
fromEnc RubyStringEncoding
IBM863                     = ByteString
"IBM863"
fromEnc RubyStringEncoding
IBM864                     = ByteString
"IBM864"
fromEnc RubyStringEncoding
IBM865                     = ByteString
"IBM865"
fromEnc RubyStringEncoding
IBM866                     = ByteString
"IBM866"
fromEnc RubyStringEncoding
IBM869                     = ByteString
"IBM869"
fromEnc RubyStringEncoding
Windows_1258               = ByteString
"Windows-1258"
fromEnc RubyStringEncoding
GB1988                     = ByteString
"GB1988"
fromEnc RubyStringEncoding
MacCentEuro                = ByteString
"macCentEuro"
fromEnc RubyStringEncoding
MacCroatian                = ByteString
"macCroatian"
fromEnc RubyStringEncoding
MacCyrillic                = ByteString
"macCyrillic"
fromEnc RubyStringEncoding
MacGreek                   = ByteString
"macGreek"
fromEnc RubyStringEncoding
MacIceland                 = ByteString
"macIceland"
fromEnc RubyStringEncoding
MacRoman                   = ByteString
"macRoman"
fromEnc RubyStringEncoding
MacRomania                 = ByteString
"macRomania"
fromEnc RubyStringEncoding
MacThai                    = ByteString
"macThai"
fromEnc RubyStringEncoding
MacTurkish                 = ByteString
"macTurkish"
fromEnc RubyStringEncoding
MacUkraine                 = ByteString
"macUkraine"
fromEnc RubyStringEncoding
CP950                      = ByteString
"CP950"
fromEnc RubyStringEncoding
CP951                      = ByteString
"CP951"
fromEnc RubyStringEncoding
Stateless_ISO_2022_JP      = ByteString
"stateless-ISO-2022-JP"
fromEnc RubyStringEncoding
EucJP_ms                   = ByteString
"eucJP-ms"
fromEnc RubyStringEncoding
CP51932                    = ByteString
"CP51932"
fromEnc RubyStringEncoding
EUC_JP_2004                = ByteString
"EUC-JP-2004"
fromEnc RubyStringEncoding
GB2312                     = ByteString
"GB2312"
fromEnc RubyStringEncoding
GB12345                    = ByteString
"GB12345"
fromEnc RubyStringEncoding
ISO_2022_JP                = ByteString
"ISO-2022-JP"
fromEnc RubyStringEncoding
ISO_2022_JP_2              = ByteString
"ISO-2022-JP-2"
fromEnc RubyStringEncoding
CP50220                    = ByteString
"CP50220"
fromEnc RubyStringEncoding
CP50221                    = ByteString
"CP50221"
fromEnc RubyStringEncoding
Windows_1252               = ByteString
"Windows-1252"
fromEnc RubyStringEncoding
Windows_1250               = ByteString
"Windows-1250"
fromEnc RubyStringEncoding
Windows_1256               = ByteString
"Windows-1256"
fromEnc RubyStringEncoding
Windows_1253               = ByteString
"Windows-1253"
fromEnc RubyStringEncoding
Windows_1255               = ByteString
"Windows-1255"
fromEnc RubyStringEncoding
Windows_1254               = ByteString
"Windows-1254"
fromEnc RubyStringEncoding
TIS_620                    = ByteString
"TIS-620"
fromEnc RubyStringEncoding
Windows_874                = ByteString
"Windows-874"
fromEnc RubyStringEncoding
Windows_1257               = ByteString
"Windows-1257"
fromEnc RubyStringEncoding
MacJapanese                = ByteString
"MacJapanese"
fromEnc RubyStringEncoding
UTF_7                      = ByteString
"UTF-7"
fromEnc RubyStringEncoding
UTF8_MAC                   = ByteString
"UTF8-MAC"
fromEnc RubyStringEncoding
UTF_16                     = ByteString
"UTF-16"
fromEnc RubyStringEncoding
UTF_32                     = ByteString
"UTF-32"
fromEnc RubyStringEncoding
UTF8_DoCoMo                = ByteString
"UTF8-DoCoMo"
fromEnc RubyStringEncoding
SJIS_DoCoMo                = ByteString
"SJIS-DoCoMo"
fromEnc RubyStringEncoding
UTF8_KDDI                  = ByteString
"UTF8-KDDI"
fromEnc RubyStringEncoding
SJIS_KDDI                  = ByteString
"SJIS-KDDI"
fromEnc RubyStringEncoding
ISO_2022_JP_KDDI           = ByteString
"ISO-2022-JP-KDDI"
fromEnc RubyStringEncoding
Stateless_ISO_2022_JP_KDDI = ByteString
"stateless-ISO-2022-JP-KDDI"
fromEnc RubyStringEncoding
UTF8_SoftBank              = ByteString
"UTF8-SoftBank"
fromEnc RubyStringEncoding
SJIS_SoftBank              = ByteString
"SJIS-SoftBank"
fromEnc RubyStringEncoding
_                          = ByteString
"UnsupportedEncoding"