{-# LANGUAGE DeriveGeneric #-}

module Jordan.Types.JSONType where

import Control.DeepSeq
import GHC.Generics
import Jordan.FromJSON.Class (FromJSON)
import Jordan.ToJSON.Class (ToJSON)

data JSONType
  = JSONTypeNull
  | JSONTypeBool
  | JSONTypeText
  | JSONTypeNumber
  | JSONTypeArray
  | JSONTypeObject
  deriving (Int -> JSONType -> ShowS
[JSONType] -> ShowS
JSONType -> String
(Int -> JSONType -> ShowS)
-> (JSONType -> String) -> ([JSONType] -> ShowS) -> Show JSONType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSONType] -> ShowS
$cshowList :: [JSONType] -> ShowS
show :: JSONType -> String
$cshow :: JSONType -> String
showsPrec :: Int -> JSONType -> ShowS
$cshowsPrec :: Int -> JSONType -> ShowS
Show, JSONType -> JSONType -> Bool
(JSONType -> JSONType -> Bool)
-> (JSONType -> JSONType -> Bool) -> Eq JSONType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSONType -> JSONType -> Bool
$c/= :: JSONType -> JSONType -> Bool
== :: JSONType -> JSONType -> Bool
$c== :: JSONType -> JSONType -> Bool
Eq, ReadPrec [JSONType]
ReadPrec JSONType
Int -> ReadS JSONType
ReadS [JSONType]
(Int -> ReadS JSONType)
-> ReadS [JSONType]
-> ReadPrec JSONType
-> ReadPrec [JSONType]
-> Read JSONType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [JSONType]
$creadListPrec :: ReadPrec [JSONType]
readPrec :: ReadPrec JSONType
$creadPrec :: ReadPrec JSONType
readList :: ReadS [JSONType]
$creadList :: ReadS [JSONType]
readsPrec :: Int -> ReadS JSONType
$creadsPrec :: Int -> ReadS JSONType
Read, Eq JSONType
Eq JSONType
-> (JSONType -> JSONType -> Ordering)
-> (JSONType -> JSONType -> Bool)
-> (JSONType -> JSONType -> Bool)
-> (JSONType -> JSONType -> Bool)
-> (JSONType -> JSONType -> Bool)
-> (JSONType -> JSONType -> JSONType)
-> (JSONType -> JSONType -> JSONType)
-> Ord JSONType
JSONType -> JSONType -> Bool
JSONType -> JSONType -> Ordering
JSONType -> JSONType -> JSONType
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: JSONType -> JSONType -> JSONType
$cmin :: JSONType -> JSONType -> JSONType
max :: JSONType -> JSONType -> JSONType
$cmax :: JSONType -> JSONType -> JSONType
>= :: JSONType -> JSONType -> Bool
$c>= :: JSONType -> JSONType -> Bool
> :: JSONType -> JSONType -> Bool
$c> :: JSONType -> JSONType -> Bool
<= :: JSONType -> JSONType -> Bool
$c<= :: JSONType -> JSONType -> Bool
< :: JSONType -> JSONType -> Bool
$c< :: JSONType -> JSONType -> Bool
compare :: JSONType -> JSONType -> Ordering
$ccompare :: JSONType -> JSONType -> Ordering
$cp1Ord :: Eq JSONType
Ord, JSONType
JSONType -> JSONType -> Bounded JSONType
forall a. a -> a -> Bounded a
maxBound :: JSONType
$cmaxBound :: JSONType
minBound :: JSONType
$cminBound :: JSONType
Bounded, Int -> JSONType
JSONType -> Int
JSONType -> [JSONType]
JSONType -> JSONType
JSONType -> JSONType -> [JSONType]
JSONType -> JSONType -> JSONType -> [JSONType]
(JSONType -> JSONType)
-> (JSONType -> JSONType)
-> (Int -> JSONType)
-> (JSONType -> Int)
-> (JSONType -> [JSONType])
-> (JSONType -> JSONType -> [JSONType])
-> (JSONType -> JSONType -> [JSONType])
-> (JSONType -> JSONType -> JSONType -> [JSONType])
-> Enum JSONType
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: JSONType -> JSONType -> JSONType -> [JSONType]
$cenumFromThenTo :: JSONType -> JSONType -> JSONType -> [JSONType]
enumFromTo :: JSONType -> JSONType -> [JSONType]
$cenumFromTo :: JSONType -> JSONType -> [JSONType]
enumFromThen :: JSONType -> JSONType -> [JSONType]
$cenumFromThen :: JSONType -> JSONType -> [JSONType]
enumFrom :: JSONType -> [JSONType]
$cenumFrom :: JSONType -> [JSONType]
fromEnum :: JSONType -> Int
$cfromEnum :: JSONType -> Int
toEnum :: Int -> JSONType
$ctoEnum :: Int -> JSONType
pred :: JSONType -> JSONType
$cpred :: JSONType -> JSONType
succ :: JSONType -> JSONType
$csucc :: JSONType -> JSONType
Enum, (forall x. JSONType -> Rep JSONType x)
-> (forall x. Rep JSONType x -> JSONType) -> Generic JSONType
forall x. Rep JSONType x -> JSONType
forall x. JSONType -> Rep JSONType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep JSONType x -> JSONType
$cfrom :: forall x. JSONType -> Rep JSONType x
Generic)

instance ToJSON JSONType

instance FromJSON JSONType

instance NFData JSONType