git.iko.soy/typeable/bytestring-conversion
on master help sign in
Issue #1: Add instances for Data.CaseInsensitive.CI.
commit863792f703b5c9ff4f40074e1958b5a6810875f6 authorToralf Wittner <tw@dtex.org> dateWed 27 Aug 2014, 22:05 (12 years ago) parentffea33b
3 files changed+10−2
bytestring-conversion.cabal+2−1 src/Data/ByteString/Conversion/From.hs+4 src/Data/ByteString/Conversion/To.hs+4−1
bytestring-conversion.cabal+2−1
@@ -1,5 +1,5 @@
11name: bytestring-conversion
2−version: 0.1.1
2+version: 0.2
33synopsis: Type-classes to convert values to and from ByteString.
44license: OtherLicense
55license-file: LICENSE
@@ -40,6 +40,7 @@ library
4040 base >= 4.5 && < 5.0
4141 , attoparsec >= 0.10 && < 0.13
4242 , bytestring >= 0.10.4 && < 0.11
43+ , case-insensitive == 1.2.*
4344 , double-conversion == 2.0.*
4445 , text >= 0.11 && < 1.2
4546
src/Data/ByteString/Conversion/From.hs+4
@@ -20,6 +20,7 @@ import Data.Attoparsec.ByteString.Char8 (signed, decimal, double, hexadecimal)
2020import Data.Bits (Bits)
2121import Data.ByteString (ByteString, elem)
2222import Data.ByteString.Conversion.Internal
23+import Data.CaseInsensitive (CI, FoldCase, mk)
2324import Data.Int
2425import Data.Maybe (isJust)
2526import Data.Text (Text)
@@ -69,6 +70,9 @@ instance FromByteString Lazy.ByteString where
6970instance FromByteString a => FromByteString (List a) where
7071 parser = parseList
7172
73+instance (FoldCase a, FromByteString a) => FromByteString (CI a) where
74+ parser = mk <$> parser
75+
7276-- | UTF-8 is assumed as encoding format.
7377instance FromByteString Char where
7478 parser = do
src/Data/ByteString/Conversion/To.hs+4−1
@@ -8,7 +8,6 @@
88
99module Data.ByteString.Conversion.To
1010 ( ToByteString (..)
11− , Builder
1211 , toByteString
1312 , toByteString'
1413 , runBuilder
@@ -18,6 +17,7 @@ import Data.ByteString (ByteString)
1817import Data.ByteString.Conversion.Internal
1918import Data.ByteString.Lazy.Builder
2019import Data.ByteString.Lazy.Builder.Extras hiding (runBuilder)
20+import Data.CaseInsensitive (CI, original)
2121import Data.Double.Conversion.Text
2222import Data.Int
2323import Data.List (intersperse)
@@ -75,6 +75,9 @@ instance ToByteString Bool where
7575 builder True = byteString "true"
7676 builder False = byteString "false"
7777
78+instance ToByteString a => ToByteString (CI a) where
79+ builder = builder . original
80+
7881toByteString :: ToByteString a => a -> L.ByteString
7982toByteString = runBuilder . builder
8083