packages feed

encoding 0.4 → 0.4.1

raw patch · 2 files changed

+188/−35 lines, 2 filesdep +regex-compatPVP ok

version bump matches the API change (PVP)

Dependencies added: regex-compat

API changes (from Hackage documentation)

Files

Data/Encoding.hs view
@@ -50,6 +50,8 @@ import Data.Encoding.KOI8R import Data.Encoding.KOI8U import Data.Encoding.GB18030+import Data.Char+import Text.Regex #endif  -- | An untyped encoding. Used in 'System.IO.Encoding.getSystemEncoding'.@@ -82,38 +84,189 @@ #ifndef USE_HPC -- | Like 'encodingFromString' but returns 'Nothing' instead of throwing an error encodingFromStringMaybe :: String -> Maybe DynEncoding-encodingFromStringMaybe "ASCII"		= Just $ DynEncoding ASCII-encodingFromStringMaybe "UTF-8"		= Just $ DynEncoding UTF8-encodingFromStringMaybe "UTF-16"	= Just $ DynEncoding UTF16-encodingFromStringMaybe "UTF-32"	= Just $ DynEncoding UTF32-encodingFromStringMaybe "KOI8-R"	= Just $ DynEncoding KOI8R-encodingFromStringMaybe "KOI8-U"	= Just $ DynEncoding KOI8U-encodingFromStringMaybe "ISO-8859-1"	= Just $ DynEncoding ISO88591-encodingFromStringMaybe "ISO-8859-2"	= Just $ DynEncoding ISO88592-encodingFromStringMaybe "ISO-8859-3"	= Just $ DynEncoding ISO88593-encodingFromStringMaybe "ISO-8859-4"	= Just $ DynEncoding ISO88594-encodingFromStringMaybe "ISO-8859-5"	= Just $ DynEncoding ISO88595-encodingFromStringMaybe "ISO-8859-6"	= Just $ DynEncoding ISO88596-encodingFromStringMaybe "ISO-8859-7"	= Just $ DynEncoding ISO88597-encodingFromStringMaybe "ISO-8859-8"	= Just $ DynEncoding ISO88598-encodingFromStringMaybe "ISO-8859-9"	= Just $ DynEncoding ISO88599-encodingFromStringMaybe "ISO-8859-10"	= Just $ DynEncoding ISO885910-encodingFromStringMaybe "ISO-8859-11"	= Just $ DynEncoding ISO885911-encodingFromStringMaybe "ISO-8859-13"	= Just $ DynEncoding ISO885913-encodingFromStringMaybe "ISO-8859-14"	= Just $ DynEncoding ISO885914-encodingFromStringMaybe "ISO-8859-15"	= Just $ DynEncoding ISO885915-encodingFromStringMaybe "ISO-8859-16"	= Just $ DynEncoding ISO885916-encodingFromStringMaybe "CP1250"	= Just $ DynEncoding CP1250-encodingFromStringMaybe "CP1251"	= Just $ DynEncoding CP1251-encodingFromStringMaybe "CP1252"	= Just $ DynEncoding CP1252-encodingFromStringMaybe "CP1253"	= Just $ DynEncoding CP1253-encodingFromStringMaybe "CP1254"	= Just $ DynEncoding CP1254-encodingFromStringMaybe "CP1255"	= Just $ DynEncoding CP1255-encodingFromStringMaybe "CP1256"	= Just $ DynEncoding CP1256-encodingFromStringMaybe "CP1257"	= Just $ DynEncoding CP1257-encodingFromStringMaybe "CP1258"	= Just $ DynEncoding CP1258-encodingFromStringMaybe "GB18030"	= Just $ DynEncoding GB18030-encodingFromStringMaybe _		= Nothing+encodingFromStringMaybe codeName = case (normalizeEncoding codeName) of+    -- ASCII+    "ascii"              -> Just $ DynEncoding ASCII+    "646"                -> Just $ DynEncoding ASCII+    "ansi_x3_4_1968"     -> Just $ DynEncoding ASCII+    "ansi_x3.4_1986"     -> Just $ DynEncoding ASCII+    "cp367"              -> Just $ DynEncoding ASCII+    "csascii"            -> Just $ DynEncoding ASCII+    "ibm367"             -> Just $ DynEncoding ASCII+    "iso646_us"          -> Just $ DynEncoding ASCII+    "iso_646.irv_1991"   -> Just $ DynEncoding ASCII+    "iso_ir_6"           -> Just $ DynEncoding ASCII+    "us"                 -> Just $ DynEncoding ASCII+    "us_ascii"           -> Just $ DynEncoding ASCII+    -- UTF-8+    "utf_8"              -> Just $ DynEncoding UTF8+    "u8"                 -> Just $ DynEncoding UTF8+    "utf"                -> Just $ DynEncoding UTF8+    "utf8"               -> Just $ DynEncoding UTF8+    "utf8_ucs2"          -> Just $ DynEncoding UTF8+    "utf8_ucs4"          -> Just $ DynEncoding UTF8+    -- UTF-16+    "utf_16"             -> Just $ DynEncoding UTF16+    "u16"                -> Just $ DynEncoding UTF16+    "utf16"              -> Just $ DynEncoding UTF16+    -- UTF-32+    "utf_32"             -> Just $ DynEncoding UTF32+    -- KOI8-R+    "koi8_r"             -> Just $ DynEncoding KOI8R+    "cskoi8r"            -> Just $ DynEncoding KOI8R+    -- KOI8-I+    "koi8_u"             -> Just $ DynEncoding KOI8U+    -- ISO-8859-1+    "iso_8859_1"         -> Just $ DynEncoding ISO88591+    "iso8859_1"          -> Just $ DynEncoding ISO88591+    "8859"               -> Just $ DynEncoding ISO88591+    "cp819"              -> Just $ DynEncoding ISO88591+    "csisolatin1"        -> Just $ DynEncoding ISO88591+    "ibm819"             -> Just $ DynEncoding ISO88591+    "iso8859"            -> Just $ DynEncoding ISO88591+    "iso_8859_1_1987"    -> Just $ DynEncoding ISO88591+    "iso_ir_100"         -> Just $ DynEncoding ISO88591+    "l1"                 -> Just $ DynEncoding ISO88591+    "latin"              -> Just $ DynEncoding ISO88591+    "latin1"             -> Just $ DynEncoding ISO88591+    -- ISO-8859-2+    "iso_8859_2"         -> Just $ DynEncoding ISO88592+    "iso8859_2"          -> Just $ DynEncoding ISO88592+    "csisolatin2"        -> Just $ DynEncoding ISO88592+    "iso_8859_2_1987"    -> Just $ DynEncoding ISO88592+    "iso_ir_101"         -> Just $ DynEncoding ISO88592+    "l2"                 -> Just $ DynEncoding ISO88592+    "latin2"             -> Just $ DynEncoding ISO88592+    -- ISO-8859-3+    "iso_8859_3"         -> Just $ DynEncoding ISO88593+    "iso8859_3"          -> Just $ DynEncoding ISO88593+    "csisolatin3"        -> Just $ DynEncoding ISO88593+    "iso_8859_3_1988"    -> Just $ DynEncoding ISO88593+    "iso_ir_109"         -> Just $ DynEncoding ISO88593+    "l3"                 -> Just $ DynEncoding ISO88593+    "latin3"             -> Just $ DynEncoding ISO88593+    --ISO-8859-4+    "iso_8859_4"         -> Just $ DynEncoding ISO88594+    "iso8859_4"          -> Just $ DynEncoding ISO88594+    "csisolatin4"        -> Just $ DynEncoding ISO88594+    "iso_8859_4_1988"    -> Just $ DynEncoding ISO88594+    "iso_ir_110"         -> Just $ DynEncoding ISO88594+    "l4"                 -> Just $ DynEncoding ISO88594+    "latin4"             -> Just $ DynEncoding ISO88594+    --ISO-8859-5+    "iso_8859_5"         -> Just $ DynEncoding ISO88595+    "iso8859_5"          -> Just $ DynEncoding ISO88595+    "csisolatincyrillic" -> Just $ DynEncoding ISO88595+    "cyrillic"           -> Just $ DynEncoding ISO88595+    "iso_8859_5_1988"    -> Just $ DynEncoding ISO88595+    "iso_ir_144"         -> Just $ DynEncoding ISO88595+    -- ISO-8859-6+    "iso_8859_6"         -> Just $ DynEncoding ISO88596+    "iso8859_6"          -> Just $ DynEncoding ISO88596+    "arabic"             -> Just $ DynEncoding ISO88596+    "asmo_708"           -> Just $ DynEncoding ISO88596+    "csisolatinarabic"   -> Just $ DynEncoding ISO88596+    "ecma_114"           -> Just $ DynEncoding ISO88596+    "iso_8859_6_1987"    -> Just $ DynEncoding ISO88596+    "iso_ir_127"         -> Just $ DynEncoding ISO88596+    -- ISO-8859-7+    "iso_8859_7"         -> Just $ DynEncoding ISO88597+    "iso8859_7"          -> Just $ DynEncoding ISO88597+    "csisolatingreek"    -> Just $ DynEncoding ISO88597+    "ecma_118"           -> Just $ DynEncoding ISO88597+    "elot_928"           -> Just $ DynEncoding ISO88597+    "greek"              -> Just $ DynEncoding ISO88597+    "greek8"             -> Just $ DynEncoding ISO88597+    "iso_8859_7_1987"    -> Just $ DynEncoding ISO88597+    "iso_ir_126"         -> Just $ DynEncoding ISO88597+    -- ISO-8859-8+    "iso_8859_8"         -> Just $ DynEncoding ISO88598+    "iso8859_8"          -> Just $ DynEncoding ISO88598+    "csisolatinhebrew"   -> Just $ DynEncoding ISO88598+    "hebrew"             -> Just $ DynEncoding ISO88598+    "iso_8859_8_1988"    -> Just $ DynEncoding ISO88598+    "iso_ir_138"         -> Just $ DynEncoding ISO88598+    -- ISO-8859-9+    "iso_8859_9"         -> Just $ DynEncoding ISO88599+    "iso8859_9"          -> Just $ DynEncoding ISO88599+    "csisolatin5"        -> Just $ DynEncoding ISO88599+    "iso_8859_9_1989"    -> Just $ DynEncoding ISO88599+    "iso_ir_148"         -> Just $ DynEncoding ISO88599+    "l5"                 -> Just $ DynEncoding ISO88599+    "latin5"             -> Just $ DynEncoding ISO88599+    -- ISO-8859-10+    "iso_8859_10"        -> Just $ DynEncoding ISO885910+    "iso8859_10"         -> Just $ DynEncoding ISO885910+    "csisolatin6"        -> Just $ DynEncoding ISO885910+    "iso_8859_10_1992"   -> Just $ DynEncoding ISO885910+    "iso_ir_157"         -> Just $ DynEncoding ISO885910+    "l6"                 -> Just $ DynEncoding ISO885910+    "latin6"             -> Just $ DynEncoding ISO885910+    -- ISO-8859-11+    "iso_8859_11"        -> Just $ DynEncoding ISO885911+    "iso8859_11"         -> Just $ DynEncoding ISO885911+    "thai"               -> Just $ DynEncoding ISO885911+    "iso_8859_11_2001"   -> Just $ DynEncoding ISO885911+    -- ISO-8859-13+    "iso_8859_13"        -> Just $ DynEncoding ISO885913+    "iso8859_13"         -> Just $ DynEncoding ISO885913+    -- ISO-8859-14+    "iso_8859_14"        -> Just $ DynEncoding ISO885914+    "iso8859_14"         -> Just $ DynEncoding ISO885914+    "iso_8859_14_1998"   -> Just $ DynEncoding ISO885914+    "iso_celtic"         -> Just $ DynEncoding ISO885914+    "iso_ir_199"         -> Just $ DynEncoding ISO885914+    "l8"                 -> Just $ DynEncoding ISO885914+    "latin8"             -> Just $ DynEncoding ISO885914+    -- ISO-8859-15+    "iso_8859_15"        -> Just $ DynEncoding ISO885915+    "iso8859_15"         -> Just $ DynEncoding ISO885915+    "latin9"             -> Just $ DynEncoding ISO885915+    "l9"                 -> Just $ DynEncoding ISO885915+    -- ISO-8859-16+    "iso_8859_16"        -> Just $ DynEncoding ISO885916+    "iso8859_16"         -> Just $ DynEncoding ISO885916+    "iso_8859_16_2001"   -> Just $ DynEncoding ISO885916+    "iso_ir_226"         -> Just $ DynEncoding ISO885916+    "l10"                -> Just $ DynEncoding ISO885916+    "latin10"            -> Just $ DynEncoding ISO885916+    -- CP1250+    "cp1250"             -> Just $ DynEncoding CP1250+    "windows_1250"       -> Just $ DynEncoding CP1250+    -- CP1251+    "cp1251"             -> Just $ DynEncoding CP1251+    "windows_1251"       -> Just $ DynEncoding CP1251+    -- CP1252+    "cp1252"             -> Just $ DynEncoding CP1252+    "windows_1252"       -> Just $ DynEncoding CP1252+    -- CP1253+    "cp1253"             -> Just $ DynEncoding CP1253+    "windows_1253"       -> Just $ DynEncoding CP1253+    -- CP1254+    "cp1254"             -> Just $ DynEncoding CP1254+    "windows_1254"       -> Just $ DynEncoding CP1254+    -- CP1255+    "cp1255"             -> Just $ DynEncoding CP1255+    "windows_1255"       -> Just $ DynEncoding CP1255+    -- CP1256+    "cp1256"             -> Just $ DynEncoding CP1256+    "windows_1256"       -> Just $ DynEncoding CP1256+    -- CP1257+    "cp1257"             -> Just $ DynEncoding CP1257+    "windows_1257"       -> Just $ DynEncoding CP1257+    -- CP1258+    "cp1258"             -> Just $ DynEncoding CP1258+    "windows_1258"       -> Just $ DynEncoding CP1258+    -- GB18030+    "gb18030"            -> Just $ DynEncoding GB18030+    "gb18030_2000"       -> Just $ DynEncoding GB18030+    -- defaults to nothing+    _                    -> Nothing+  where+    normalizeEncoding s = map toLower $ subRegex sep s "_"+    sep = mkRegex "[^0-9A-Za-z]+"++  -- | Takes the name of an encoding and creates a dynamic encoding from it. encodingFromString :: String -> DynEncoding
encoding.cabal view
@@ -1,5 +1,5 @@ Name:		encoding-Version:	0.4+Version:	0.4.1 Author:		Henning Günther Maintainer:	h.guenther@tu-bs.de License:	BSD3@@ -45,9 +45,9 @@  Library   if flag(splitBase)-    Build-Depends:	bytestring, base >= 3, template-haskell, containers, array+    Build-Depends:	bytestring, base >= 3, template-haskell, containers, array, regex-compat   else-    Build-Depends:	base < 3, template-haskell+    Build-Depends:	base < 3, template-haskell, regex-compat   Extensions:	TemplateHaskell,CPP,ExistentialQuantification,ForeignFunctionInterface   C-Sources:	system_encoding.c   Include-Dirs:	.