Maintainer | Brandon Chinn <brandon@leapyear.io> |
---|---|
Stability | experimental |
Portability | portable |
Safe Haskell | None |
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)
- type SchemaV = Schema' String NameLike
- type SchemaTypeV = SchemaType' String NameLike
- type SchemaObjectMapV = SchemaObjectMap' String NameLike
- data 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
Documentation
The schema definition for a JSON object.
Schema (SchemaObjectMap' s ty) |
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) |
Instances
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 #