git.iko.soy/typeable/bytestring-conversion
on master help sign in
Add `FromByteString` instance for lazy `Text`.
commit968cc7a6e1e400c1cb6bc12d663b849cc3460637 authorToralf Wittner <tw@dtex.org> dateWed 26 Nov 2014, 23:43 (12 years ago) parent2f74bb1
2 files changed+12−1
bytestring-conversion.cabal+1−1 src/Data/ByteString/Conversion/From.hs+11
bytestring-conversion.cabal+1−1
@@ -1,5 +1,5 @@
11name: bytestring-conversion
2−version: 0.2.1
2+version: 0.3.0
33synopsis: Type-classes to convert values to and from ByteString.
44license: OtherLicense
55license-file: LICENSE
src/Data/ByteString/Conversion/From.hs+11
@@ -31,6 +31,8 @@ import Prelude hiding (elem)
3131import qualified Data.Attoparsec.ByteString.Lazy as Lazy
3232import qualified Data.ByteString.Lazy as Lazy
3333import qualified Data.Text as T
34+import qualified Data.Text.Lazy as TL
35+import qualified Data.Text.Lazy.Encoding as TL
3436
3537-- | Parse 'ByteString's.
3638class FromByteString a where
@@ -89,6 +91,10 @@ instance FromByteString [Char] where
8991instance FromByteString Text where
9092 parser = takeByteString >>= text
9193
94+-- | UTF-8 is assumed as encoding format.
95+instance FromByteString TL.Text where
96+ parser = takeLazyByteString >>= ltext
97+
9298instance FromByteString Bool where
9399 parser =
94100 satisfy (`elem` "tT") *> string "rue" *> pure True <|>
@@ -159,3 +165,8 @@ parseList = atEnd >>= \e ->
159165
160166text :: ByteString -> Parser Text
161167text = either (fail . ("Invalid UTF-8: " ++) . show) return . decodeUtf8'
168+{-# INLINE text #-}
169+
170+ltext :: Lazy.ByteString -> Parser TL.Text
171+ltext = either (fail . ("Invalid UTF-8: " ++) . show) return . TL.decodeUtf8'
172+{-# INLINE ltext #-}