@@ -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 #-}