{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
module HaskellWorks.Data.Json.Internal.Standard.Token.Tokenize
( IsChar(..)
, JsonToken(..)
, ParseJson(..)
) where
import Control.Applicative
import Data.Bits
import Data.Char
import Data.Word
import Data.Word8
import HaskellWorks.Data.Char.IsChar
import HaskellWorks.Data.Json.Internal.Token.Types
import HaskellWorks.Data.Parser ((<?>))
import qualified Data.Attoparsec.ByteString.Char8 as BC
import qualified Data.Attoparsec.Combinator as AC
import qualified Data.Attoparsec.Types as T
import qualified Data.ByteString as BS
import qualified HaskellWorks.Data.Parser as P
hexDigitNumeric :: P.Parser t u => T.Parser t Int
hexDigitNumeric :: forall t u. Parser t u => Parser t Int
hexDigitNumeric = do
Char
c <- (Char -> Bool) -> Parser t Char
forall t e. Parser t e => (Char -> Bool) -> Parser t Char
P.satisfyChar (\Char
c -> Char
'0' Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
c Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'9')
Int -> Parser t Int
forall a. a -> Parser t a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int -> Parser t Int) -> Int -> Parser t Int
forall a b. (a -> b) -> a -> b
$ Char -> Int
ord Char
c Int -> Int -> Int
forall a. Num a => a -> a -> a
- Char -> Int
ord Char
'0'
hexDigitAlphaLower :: P.Parser t u => T.Parser t Int
hexDigitAlphaLower :: forall t u. Parser t u => Parser t Int
hexDigitAlphaLower = do
Char
c <- (Char -> Bool) -> Parser t Char
forall t e. Parser t e => (Char -> Bool) -> Parser t Char
P.satisfyChar (\Char
c -> Char
'a' Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
c Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'z')
Int -> Parser t Int
forall a. a -> Parser t a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int -> Parser t Int) -> Int -> Parser t Int
forall a b. (a -> b) -> a -> b
$ Char -> Int
ord Char
c Int -> Int -> Int
forall a. Num a => a -> a -> a
- Char -> Int
ord Char
'a' Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
10
hexDigitAlphaUpper :: P.Parser t u => T.Parser t Int
hexDigitAlphaUpper :: forall t u. Parser t u => Parser t Int
hexDigitAlphaUpper = do
Char
c <- (Char -> Bool) -> Parser t Char
forall t e. Parser t e => (Char -> Bool) -> Parser t Char
P.satisfyChar (\Char
c -> Char
'A' Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
c Bool -> Bool -> Bool
&& Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'Z')
Int -> Parser t Int
forall a. a -> Parser t a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int -> Parser t Int) -> Int -> Parser t Int
forall a b. (a -> b) -> a -> b
$ Char -> Int
ord Char
c Int -> Int -> Int
forall a. Num a => a -> a -> a
- Char -> Int
ord Char
'A' Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
10
hexDigit :: P.Parser t u => T.Parser t Int
hexDigit :: forall t u. Parser t u => Parser t Int
hexDigit = Parser t Int
forall t u. Parser t u => Parser t Int
hexDigitNumeric Parser t Int -> Parser t Int -> Parser t Int
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Parser t Int
forall t u. Parser t u => Parser t Int
hexDigitAlphaLower Parser t Int -> Parser t Int -> Parser t Int
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Parser t Int
forall t u. Parser t u => Parser t Int
hexDigitAlphaUpper
class ParseJson t s d where
parseJsonTokenString :: T.Parser t (JsonToken s d)
parseJsonToken :: T.Parser t (JsonToken s d)
parseJsonTokenBraceL :: T.Parser t (JsonToken s d)
parseJsonTokenBraceR :: T.Parser t (JsonToken s d)
parseJsonTokenBracketL :: T.Parser t (JsonToken s d)
parseJsonTokenBracketR :: T.Parser t (JsonToken s d)
parseJsonTokenComma :: T.Parser t (JsonToken s d)
parseJsonTokenColon :: T.Parser t (JsonToken s d)
parseJsonTokenWhitespace :: T.Parser t (JsonToken s d)
parseJsonTokenNull :: T.Parser t (JsonToken s d)
parseJsonTokenBoolean :: T.Parser t (JsonToken s d)
parseJsonTokenDouble :: T.Parser t (JsonToken s d)
parseJsonToken =
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenString Parser t (JsonToken s d)
-> Parser t (JsonToken s d) -> Parser t (JsonToken s d)
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenBraceL Parser t (JsonToken s d)
-> Parser t (JsonToken s d) -> Parser t (JsonToken s d)
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenBraceR Parser t (JsonToken s d)
-> Parser t (JsonToken s d) -> Parser t (JsonToken s d)
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenBracketL Parser t (JsonToken s d)
-> Parser t (JsonToken s d) -> Parser t (JsonToken s d)
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenBracketR Parser t (JsonToken s d)
-> Parser t (JsonToken s d) -> Parser t (JsonToken s d)
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenComma Parser t (JsonToken s d)
-> Parser t (JsonToken s d) -> Parser t (JsonToken s d)
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenColon Parser t (JsonToken s d)
-> Parser t (JsonToken s d) -> Parser t (JsonToken s d)
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenWhitespace Parser t (JsonToken s d)
-> Parser t (JsonToken s d) -> Parser t (JsonToken s d)
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenNull Parser t (JsonToken s d)
-> Parser t (JsonToken s d) -> Parser t (JsonToken s d)
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenBoolean Parser t (JsonToken s d)
-> Parser t (JsonToken s d) -> Parser t (JsonToken s d)
forall a. Parser t a -> Parser t a -> Parser t a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
Parser t (JsonToken s d)
forall t s d. ParseJson t s d => Parser t (JsonToken s d)
parseJsonTokenDouble
instance ParseJson BS.ByteString String Double where
parseJsonTokenBraceL :: Parser ByteString (JsonToken String Double)
parseJsonTokenBraceL = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"{" Parser ByteString ByteString
-> Parser ByteString (JsonToken String Double)
-> Parser ByteString (JsonToken String Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken String Double
-> Parser ByteString (JsonToken String Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken String Double
forall s d. JsonToken s d
JsonTokenBraceL
parseJsonTokenBraceR :: Parser ByteString (JsonToken String Double)
parseJsonTokenBraceR = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"}" Parser ByteString ByteString
-> Parser ByteString (JsonToken String Double)
-> Parser ByteString (JsonToken String Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken String Double
-> Parser ByteString (JsonToken String Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken String Double
forall s d. JsonToken s d
JsonTokenBraceR
parseJsonTokenBracketL :: Parser ByteString (JsonToken String Double)
parseJsonTokenBracketL = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"[" Parser ByteString ByteString
-> Parser ByteString (JsonToken String Double)
-> Parser ByteString (JsonToken String Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken String Double
-> Parser ByteString (JsonToken String Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken String Double
forall s d. JsonToken s d
JsonTokenBracketL
parseJsonTokenBracketR :: Parser ByteString (JsonToken String Double)
parseJsonTokenBracketR = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"]" Parser ByteString ByteString
-> Parser ByteString (JsonToken String Double)
-> Parser ByteString (JsonToken String Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken String Double
-> Parser ByteString (JsonToken String Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken String Double
forall s d. JsonToken s d
JsonTokenBracketR
parseJsonTokenComma :: Parser ByteString (JsonToken String Double)
parseJsonTokenComma = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"," Parser ByteString ByteString
-> Parser ByteString (JsonToken String Double)
-> Parser ByteString (JsonToken String Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken String Double
-> Parser ByteString (JsonToken String Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken String Double
forall s d. JsonToken s d
JsonTokenComma
parseJsonTokenColon :: Parser ByteString (JsonToken String Double)
parseJsonTokenColon = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
":" Parser ByteString ByteString
-> Parser ByteString (JsonToken String Double)
-> Parser ByteString (JsonToken String Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken String Double
-> Parser ByteString (JsonToken String Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken String Double
forall s d. JsonToken s d
JsonTokenColon
parseJsonTokenNull :: Parser ByteString (JsonToken String Double)
parseJsonTokenNull = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"null" Parser ByteString ByteString
-> Parser ByteString (JsonToken String Double)
-> Parser ByteString (JsonToken String Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken String Double
-> Parser ByteString (JsonToken String Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken String Double
forall s d. JsonToken s d
JsonTokenNull
parseJsonTokenDouble :: Parser ByteString (JsonToken String Double)
parseJsonTokenDouble = Double -> JsonToken String Double
forall s d. d -> JsonToken s d
JsonTokenNumber (Double -> JsonToken String Double)
-> Parser ByteString Double
-> Parser ByteString (JsonToken String Double)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser ByteString Double
forall f. Fractional f => Parser ByteString f
forall t e f. (Parser t e, Fractional f) => Parser t f
P.rational
parseJsonTokenString :: Parser ByteString (JsonToken String Double)
parseJsonTokenString = do
ByteString
_ <- ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\""
String
value <- Parser ByteString Char -> Parser ByteString String
forall a. Parser ByteString a -> Parser ByteString [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many (Parser ByteString Char
verbatimChar Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Parser ByteString Char
escapedChar Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Parser ByteString Char
escapedCode)
ByteString
_ <- ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\""
JsonToken String Double
-> Parser ByteString (JsonToken String Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return (JsonToken String Double
-> Parser ByteString (JsonToken String Double))
-> JsonToken String Double
-> Parser ByteString (JsonToken String Double)
forall a b. (a -> b) -> a -> b
$ String -> JsonToken String Double
forall s d. s -> JsonToken s d
JsonTokenString String
value
where
verbatimChar :: Parser ByteString Char
verbatimChar = (Char -> Bool) -> Parser ByteString Char
forall t e. Parser t e => (Char -> Bool) -> Parser t Char
P.satisfyChar (String -> Char -> Bool
BC.notInClass String
"\"\\") Parser ByteString Char -> String -> Parser ByteString Char
forall t e. Parser t e => Parser t Char -> String -> Parser t Char
<?> String
"invalid string character"
escapedChar :: Parser ByteString Char
escapedChar = do
ByteString
_ <- ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\\"
( Char -> Parser ByteString Char
forall t e. Parser t e => Char -> Parser t Char
P.char Char
'"' Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Parser ByteString Char
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Char
'"' ) Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Char -> Parser ByteString Char
forall t e. Parser t e => Char -> Parser t Char
P.char Char
'b' Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Parser ByteString Char
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Char
'\b' ) Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Char -> Parser ByteString Char
forall t e. Parser t e => Char -> Parser t Char
P.char Char
'n' Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Parser ByteString Char
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Char
'\n' ) Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Char -> Parser ByteString Char
forall t e. Parser t e => Char -> Parser t Char
P.char Char
'f' Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Parser ByteString Char
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Char
'\f' ) Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Char -> Parser ByteString Char
forall t e. Parser t e => Char -> Parser t Char
P.char Char
'r' Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Parser ByteString Char
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Char
'\r' ) Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Char -> Parser ByteString Char
forall t e. Parser t e => Char -> Parser t Char
P.char Char
't' Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Parser ByteString Char
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Char
'\t' ) Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Char -> Parser ByteString Char
forall t e. Parser t e => Char -> Parser t Char
P.char Char
'\\' Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Parser ByteString Char
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Char
'\\' ) Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Char -> Parser ByteString Char
forall t e. Parser t e => Char -> Parser t Char
P.char Char
'\'' Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Parser ByteString Char
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Char
'\'' ) Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Char -> Parser ByteString Char
forall t e. Parser t e => Char -> Parser t Char
P.char Char
'/' Parser ByteString Char
-> Parser ByteString Char -> Parser ByteString Char
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Char -> Parser ByteString Char
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Char
'/' )
escapedCode :: Parser ByteString Char
escapedCode = do
ByteString
_ <- ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\\u"
Int
a <- Parser ByteString Int
forall t u. Parser t u => Parser t Int
hexDigit
Int
b <- Parser ByteString Int
forall t u. Parser t u => Parser t Int
hexDigit
Int
c <- Parser ByteString Int
forall t u. Parser t u => Parser t Int
hexDigit
Int
d <- Parser ByteString Int
forall t u. Parser t u => Parser t Int
hexDigit
Char -> Parser ByteString Char
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return (Char -> Parser ByteString Char) -> Char -> Parser ByteString Char
forall a b. (a -> b) -> a -> b
$ Int -> Char
chr (Int -> Char) -> Int -> Char
forall a b. (a -> b) -> a -> b
$ Int
a Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
24 Int -> Int -> Int
forall a. Bits a => a -> a -> a
.|. Int
b Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
16 Int -> Int -> Int
forall a. Bits a => a -> a -> a
.|. Int
c Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
8 Int -> Int -> Int
forall a. Bits a => a -> a -> a
.|. Int
d
parseJsonTokenWhitespace :: Parser ByteString (JsonToken String Double)
parseJsonTokenWhitespace = do
[ByteString]
_ <- Parser ByteString ByteString -> Parser ByteString [ByteString]
forall (m :: * -> *) a. MonadPlus m => m a -> m [a]
AC.many1' (Parser ByteString ByteString -> Parser ByteString [ByteString])
-> Parser ByteString ByteString -> Parser ByteString [ByteString]
forall a b. (a -> b) -> a -> b
$ [Parser ByteString ByteString] -> Parser ByteString ByteString
forall (f :: * -> *) a. Alternative f => [f a] -> f a
BC.choice [ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
" ", ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\t", ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\n", ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\r"]
JsonToken String Double
-> Parser ByteString (JsonToken String Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken String Double
forall s d. JsonToken s d
JsonTokenWhitespace
parseJsonTokenBoolean :: Parser ByteString (JsonToken String Double)
parseJsonTokenBoolean = Parser ByteString (JsonToken String Double)
forall {s} {d}. Parser ByteString (JsonToken s d)
true Parser ByteString (JsonToken String Double)
-> Parser ByteString (JsonToken String Double)
-> Parser ByteString (JsonToken String Double)
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Parser ByteString (JsonToken String Double)
forall {s} {d}. Parser ByteString (JsonToken s d)
false
where true :: Parser ByteString (JsonToken s d)
true = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"true" Parser ByteString ByteString
-> Parser ByteString (JsonToken s d)
-> Parser ByteString (JsonToken s d)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken s d -> Parser ByteString (JsonToken s d)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool -> JsonToken s d
forall s d. Bool -> JsonToken s d
JsonTokenBoolean Bool
True)
false :: Parser ByteString (JsonToken s d)
false = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"false" Parser ByteString ByteString
-> Parser ByteString (JsonToken s d)
-> Parser ByteString (JsonToken s d)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken s d -> Parser ByteString (JsonToken s d)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool -> JsonToken s d
forall s d. Bool -> JsonToken s d
JsonTokenBoolean Bool
False)
instance ParseJson BS.ByteString BS.ByteString Double where
parseJsonTokenBraceL :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenBraceL = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"{" Parser ByteString ByteString
-> Parser ByteString (JsonToken ByteString Double)
-> Parser ByteString (JsonToken ByteString Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken ByteString Double
forall s d. JsonToken s d
JsonTokenBraceL
parseJsonTokenBraceR :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenBraceR = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"}" Parser ByteString ByteString
-> Parser ByteString (JsonToken ByteString Double)
-> Parser ByteString (JsonToken ByteString Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken ByteString Double
forall s d. JsonToken s d
JsonTokenBraceR
parseJsonTokenBracketL :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenBracketL = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"[" Parser ByteString ByteString
-> Parser ByteString (JsonToken ByteString Double)
-> Parser ByteString (JsonToken ByteString Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken ByteString Double
forall s d. JsonToken s d
JsonTokenBracketL
parseJsonTokenBracketR :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenBracketR = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"]" Parser ByteString ByteString
-> Parser ByteString (JsonToken ByteString Double)
-> Parser ByteString (JsonToken ByteString Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken ByteString Double
forall s d. JsonToken s d
JsonTokenBracketR
parseJsonTokenComma :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenComma = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"," Parser ByteString ByteString
-> Parser ByteString (JsonToken ByteString Double)
-> Parser ByteString (JsonToken ByteString Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken ByteString Double
forall s d. JsonToken s d
JsonTokenComma
parseJsonTokenColon :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenColon = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
":" Parser ByteString ByteString
-> Parser ByteString (JsonToken ByteString Double)
-> Parser ByteString (JsonToken ByteString Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken ByteString Double
forall s d. JsonToken s d
JsonTokenColon
parseJsonTokenNull :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenNull = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"null" Parser ByteString ByteString
-> Parser ByteString (JsonToken ByteString Double)
-> Parser ByteString (JsonToken ByteString Double)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken ByteString Double
forall s d. JsonToken s d
JsonTokenNull
parseJsonTokenDouble :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenDouble = Double -> JsonToken ByteString Double
forall s d. d -> JsonToken s d
JsonTokenNumber (Double -> JsonToken ByteString Double)
-> Parser ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser ByteString Double
forall f. Fractional f => Parser ByteString f
forall t e f. (Parser t e, Fractional f) => Parser t f
P.rational
parseJsonTokenString :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenString = do
ByteString
_ <- ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\""
[Word8]
value <- Parser ByteString Word8 -> Parser ByteString [Word8]
forall a. Parser ByteString a -> Parser ByteString [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many (Parser ByteString Word8
verbatimChar Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Parser ByteString Word8
escapedChar Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Parser ByteString Word8
escapedCode)
ByteString
_ <- ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\""
JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return (JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double))
-> JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall a b. (a -> b) -> a -> b
$ ByteString -> JsonToken ByteString Double
forall s d. s -> JsonToken s d
JsonTokenString (ByteString -> JsonToken ByteString Double)
-> ByteString -> JsonToken ByteString Double
forall a b. (a -> b) -> a -> b
$ [Word8] -> ByteString
BS.pack [Word8]
value
where
word :: Word8 -> T.Parser BS.ByteString Word8
word :: Word8 -> Parser ByteString Word8
word Word8
w = (Word8 -> Bool) -> Parser ByteString Word8
forall t e. Parser t e => (e -> Bool) -> Parser t e
P.satisfy (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
w)
verbatimChar :: T.Parser BS.ByteString Word8
verbatimChar :: Parser ByteString Word8
verbatimChar = (Word8 -> Bool) -> Parser ByteString Word8
forall t e. Parser t e => (e -> Bool) -> Parser t e
P.satisfy (\Word8
w -> Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
/= Word8
_quotedbl Bool -> Bool -> Bool
&& Word8
w Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
/= Word8
_backslash)
escapedChar :: T.Parser BS.ByteString Word8
escapedChar :: Parser ByteString Word8
escapedChar = do
ByteString
_ <- ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\\"
( Word8 -> Parser ByteString Word8
word Word8
_quotedbl Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Word8 -> Parser ByteString Word8
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Word8
_quotedbl ) Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Word8 -> Parser ByteString Word8
word Word8
_b Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Word8 -> Parser ByteString Word8
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Word8
0x08 ) Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Word8 -> Parser ByteString Word8
word Word8
_n Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Word8 -> Parser ByteString Word8
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Word8
_lf ) Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Word8 -> Parser ByteString Word8
word Word8
_f Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Word8 -> Parser ByteString Word8
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Word8
_np ) Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Word8 -> Parser ByteString Word8
word Word8
_r Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Word8 -> Parser ByteString Word8
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Word8
_cr ) Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Word8 -> Parser ByteString Word8
word Word8
_t Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Word8 -> Parser ByteString Word8
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Word8
_tab ) Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Word8 -> Parser ByteString Word8
word Word8
_backslash Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Word8 -> Parser ByteString Word8
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Word8
_backslash ) Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Word8 -> Parser ByteString Word8
word Word8
_quotesingle Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Word8 -> Parser ByteString Word8
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Word8
_quotesingle ) Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
( Word8 -> Parser ByteString Word8
word Word8
_slash Parser ByteString Word8
-> Parser ByteString Word8 -> Parser ByteString Word8
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Word8 -> Parser ByteString Word8
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return Word8
_slash )
escapedCode :: T.Parser BS.ByteString Word8
escapedCode :: Parser ByteString Word8
escapedCode = do
ByteString
_ <- ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\\u"
Int
a <- Parser ByteString Int
forall t u. Parser t u => Parser t Int
hexDigit
Int
b <- Parser ByteString Int
forall t u. Parser t u => Parser t Int
hexDigit
Int
c <- Parser ByteString Int
forall t u. Parser t u => Parser t Int
hexDigit
Int
d <- Parser ByteString Int
forall t u. Parser t u => Parser t Int
hexDigit
Word8 -> Parser ByteString Word8
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return (Word8 -> Parser ByteString Word8)
-> Word8 -> Parser ByteString Word8
forall a b. (a -> b) -> a -> b
$ Int -> Word8
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word8) -> Int -> Word8
forall a b. (a -> b) -> a -> b
$ Int
a Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
24 Int -> Int -> Int
forall a. Bits a => a -> a -> a
.|. Int
b Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
16 Int -> Int -> Int
forall a. Bits a => a -> a -> a
.|. Int
c Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
8 Int -> Int -> Int
forall a. Bits a => a -> a -> a
.|. Int
d
parseJsonTokenWhitespace :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenWhitespace = do
[ByteString]
_ <- Parser ByteString ByteString -> Parser ByteString [ByteString]
forall (m :: * -> *) a. MonadPlus m => m a -> m [a]
AC.many1' (Parser ByteString ByteString -> Parser ByteString [ByteString])
-> Parser ByteString ByteString -> Parser ByteString [ByteString]
forall a b. (a -> b) -> a -> b
$ [Parser ByteString ByteString] -> Parser ByteString ByteString
forall (f :: * -> *) a. Alternative f => [f a] -> f a
BC.choice [ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
" ", ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\t", ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\n", ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"\r"]
JsonToken ByteString Double
-> Parser ByteString (JsonToken ByteString Double)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return JsonToken ByteString Double
forall s d. JsonToken s d
JsonTokenWhitespace
parseJsonTokenBoolean :: Parser ByteString (JsonToken ByteString Double)
parseJsonTokenBoolean = Parser ByteString (JsonToken ByteString Double)
forall {s} {d}. Parser ByteString (JsonToken s d)
true Parser ByteString (JsonToken ByteString Double)
-> Parser ByteString (JsonToken ByteString Double)
-> Parser ByteString (JsonToken ByteString Double)
forall a.
Parser ByteString a -> Parser ByteString a -> Parser ByteString a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Parser ByteString (JsonToken ByteString Double)
forall {s} {d}. Parser ByteString (JsonToken s d)
false
where
true :: Parser ByteString (JsonToken s d)
true = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"true" Parser ByteString ByteString
-> Parser ByteString (JsonToken s d)
-> Parser ByteString (JsonToken s d)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken s d -> Parser ByteString (JsonToken s d)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool -> JsonToken s d
forall s d. Bool -> JsonToken s d
JsonTokenBoolean Bool
True)
false :: Parser ByteString (JsonToken s d)
false = ByteString -> Parser ByteString ByteString
forall t e. Parser t e => t -> Parser t t
P.string ByteString
"false" Parser ByteString ByteString
-> Parser ByteString (JsonToken s d)
-> Parser ByteString (JsonToken s d)
forall a b.
Parser ByteString a -> Parser ByteString b -> Parser ByteString b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> JsonToken s d -> Parser ByteString (JsonToken s d)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool -> JsonToken s d
forall s d. Bool -> JsonToken s d
JsonTokenBoolean Bool
False)