Maintainer | Brandon Chinn <brandon@leapyear.io> |
---|---|
Stability | experimental |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Defines SchemaType, the AST that defines a JSON schema.
Synopsis
- data Schema' s ty = Schema (SchemaObjectMap' s ty)
- data SchemaType' s ty
- = SchemaScalar ty
- | SchemaMaybe (SchemaType' s ty)
- | SchemaTry (SchemaType' s ty)
- | SchemaList (SchemaType' s ty)
- | SchemaUnion [SchemaType' s ty]
- | SchemaObject (SchemaObjectMap' s ty)
- | SchemaInclude (Either ty (Schema' s ty))
- type SchemaV = Schema' String NameLike
- type SchemaTypeV = SchemaType' String NameLike
- type SchemaObjectMapV = SchemaObjectMap' String NameLike
- toSchemaObjectV :: SchemaV -> SchemaTypeV
- fromSchemaV :: SchemaV -> SchemaObjectMapV
- showSchemaV :: SchemaV -> String
- showSchemaTypeV :: SchemaTypeV -> String
- type Schema = Schema' Symbol Type
- type SchemaType = SchemaType' Symbol Type
- type family ToSchemaObject (schema :: Schema) :: SchemaType where ...
- type family FromSchema (schema :: Schema) :: SchemaObjectMap where ...
- class IsSchemaType (schemaType :: SchemaType) where
- toSchemaTypeV :: Proxy schemaType -> SchemaTypeV
- type IsSchemaObjectMap (pairs :: SchemaObjectMap) = All IsSchemaObjectPair pairs
- toSchemaV :: forall schema. IsSchemaObjectMap (FromSchema schema) => Proxy schema -> SchemaV
Documentation
The schema definition for a JSON object.
Schema (SchemaObjectMap' s ty) |
Instances
(Show s, Show ty) => Show (Schema' s ty) Source # | |
(Eq s, Eq ty) => Eq (Schema' s ty) Source # | |
IsSchema schema => HasSchemaResult ('SchemaInclude ('Right schema :: Either Type Schema)) Source # | |
Defined in Data.Aeson.Schema.Internal parseValue :: [Key] -> Value -> Parser (SchemaResult ('SchemaInclude ('Right schema))) Source # toValue :: SchemaResult ('SchemaInclude ('Right schema)) -> Value Source # showValue :: SchemaResult ('SchemaInclude ('Right schema)) -> ShowS Source # | |
IsSchemaObjectMap (FromSchema schema) => IsSchemaType ('SchemaInclude ('Right schema :: Either Type Schema)) Source # | |
Defined in Data.Aeson.Schema.Type toSchemaTypeV :: Proxy ('SchemaInclude ('Right schema)) -> SchemaTypeV Source # |
data SchemaType' s ty Source #
The AST defining a JSON schema.
SchemaScalar ty | |
SchemaMaybe (SchemaType' s ty) | |
SchemaTry (SchemaType' s ty) | @since v1.2.0 |
SchemaList (SchemaType' s ty) | |
SchemaUnion [SchemaType' s ty] | @since v1.1.0 |
SchemaObject (SchemaObjectMap' s ty) | |
SchemaInclude (Either ty (Schema' s ty)) | An optimization for including schemas. Will always be @since v1.3.2 |
Instances
ParseSumType ('[] :: [SchemaType]) Source # | |
Defined in Data.Aeson.Schema.Internal parseSumType :: [Key] -> Value -> Parser (SumType (SchemaResultList '[])) Source # | |
(Show ty, Show s) => Show (SchemaType' s ty) Source # | |
Defined in Data.Aeson.Schema.Type showsPrec :: Int -> SchemaType' s ty -> ShowS # show :: SchemaType' s ty -> String # showList :: [SchemaType' s ty] -> ShowS # | |
(Eq ty, Eq s) => Eq (SchemaType' s ty) Source # | |
Defined in Data.Aeson.Schema.Type (==) :: SchemaType' s ty -> SchemaType' s ty -> Bool # (/=) :: SchemaType' s ty -> SchemaType' s ty -> Bool # | |
(HasSchemaResult schema, ParseSumType schemas) => ParseSumType (schema ': schemas) Source # | |
Defined in Data.Aeson.Schema.Internal parseSumType :: [Key] -> Value -> Parser (SumType (SchemaResultList (schema ': schemas))) Source # | |
(IsSchemaKey key, HasSchemaResult inner, Typeable (SchemaResult inner)) => HasSchemaResultPair '(key, inner) Source # | |
Defined in Data.Aeson.Schema.Internal |
type SchemaTypeV = SchemaType' String NameLike Source #
type SchemaObjectMapV = SchemaObjectMap' String NameLike Source #
toSchemaObjectV :: SchemaV -> SchemaTypeV Source #
showSchemaV :: SchemaV -> String Source #
Show the given schema, as "{ key: Schema, ... }"
showSchemaTypeV :: SchemaTypeV -> String Source #
Pretty show the given SchemaType.
type Schema = Schema' Symbol Type Source #
The kind of schemas that may be used with Object; e.g.
data Payload (schema :: Schema) = Payload { getPayload :: Object schema , timestamp :: UTCTime }
type SchemaType = SchemaType' Symbol Type Source #
type family ToSchemaObject (schema :: Schema) :: SchemaType where ... Source #
ToSchemaObject ('Schema schema) = 'SchemaObject schema |
type family FromSchema (schema :: Schema) :: SchemaObjectMap where ... Source #
FromSchema ('Schema schema) = schema |
class IsSchemaType (schemaType :: SchemaType) where Source #
toSchemaTypeV :: Proxy schemaType -> SchemaTypeV Source #
Instances
type IsSchemaObjectMap (pairs :: SchemaObjectMap) = All IsSchemaObjectPair pairs Source #
toSchemaV :: forall schema. IsSchemaObjectMap (FromSchema schema) => Proxy schema -> SchemaV Source #