-- | A JSON syntax model. See the BNF at https://www.json.org

module Hydra.Ext.Json.Model where

import qualified Hydra.Core as Core
import Data.List
import Data.Map
import Data.Set

-- | A JSON value
data Value = 
  ValueArray [Value] |
  ValueBoolean Bool |
  ValueNull  |
  ValueNumber Double |
  ValueObject (Map String Value) |
  ValueString String
  deriving (Value -> Value -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Value -> Value -> Bool
$c/= :: Value -> Value -> Bool
== :: Value -> Value -> Bool
$c== :: Value -> Value -> Bool
Eq, Eq Value
Value -> Value -> Bool
Value -> Value -> Ordering
Value -> Value -> Value
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 :: Value -> Value -> Value
$cmin :: Value -> Value -> Value
max :: Value -> Value -> Value
$cmax :: Value -> Value -> Value
>= :: Value -> Value -> Bool
$c>= :: Value -> Value -> Bool
> :: Value -> Value -> Bool
$c> :: Value -> Value -> Bool
<= :: Value -> Value -> Bool
$c<= :: Value -> Value -> Bool
< :: Value -> Value -> Bool
$c< :: Value -> Value -> Bool
compare :: Value -> Value -> Ordering
$ccompare :: Value -> Value -> Ordering
Ord, ReadPrec [Value]
ReadPrec Value
Int -> ReadS Value
ReadS [Value]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Value]
$creadListPrec :: ReadPrec [Value]
readPrec :: ReadPrec Value
$creadPrec :: ReadPrec Value
readList :: ReadS [Value]
$creadList :: ReadS [Value]
readsPrec :: Int -> ReadS Value
$creadsPrec :: Int -> ReadS Value
Read, Int -> Value -> ShowS
[Value] -> ShowS
Value -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Value] -> ShowS
$cshowList :: [Value] -> ShowS
show :: Value -> String
$cshow :: Value -> String
showsPrec :: Int -> Value -> ShowS
$cshowsPrec :: Int -> Value -> ShowS
Show)

_Value :: Name
_Value = (String -> Name
Core.Name String
"hydra/ext/json/model.Value")

_Value_array :: FieldName
_Value_array = (String -> FieldName
Core.FieldName String
"array")

_Value_boolean :: FieldName
_Value_boolean = (String -> FieldName
Core.FieldName String
"boolean")

_Value_null :: FieldName
_Value_null = (String -> FieldName
Core.FieldName String
"null")

_Value_number :: FieldName
_Value_number = (String -> FieldName
Core.FieldName String
"number")

_Value_object :: FieldName
_Value_object = (String -> FieldName
Core.FieldName String
"object")

_Value_string :: FieldName
_Value_string = (String -> FieldName
Core.FieldName String
"string")