Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data Schema
- = SFix Schema
- | SSelf !Word8
- | SList !Schema
- | SArray !(VarInt Int) !Schema
- | SProduct [Schema]
- | SProductFixed [(VarInt Int, Schema)]
- | SRecord [(Text, Schema)]
- | SVariant [(Text, [Schema])]
- | SSchema !Word8
- | SUnit
- | SBool
- | SChar
- | SWord8
- | SWord16
- | SWord32
- | SWord64
- | SInt8
- | SInt16
- | SInt32
- | SInt64
- | SInteger
- | SFloat
- | SDouble
- | SBytes
- | SText
- | SUTCTime
- class Typeable a => Serialise a where
- data DecodeException
- schema :: forall proxy a. Serialise a => proxy a -> Schema
- toEncodingWithSchema :: Serialise a => a -> Encoding
- serialise :: Serialise a => a -> ByteString
- deserialise :: Serialise a => ByteString -> Either StrategyError a
- deserialiseBy :: Deserialiser a -> ByteString -> Either StrategyError a
- splitSchema :: ByteString -> Either StrategyError (Schema, ByteString)
- writeFileSerialise :: Serialise a => FilePath -> a -> IO ()
- newtype Deserialiser a = Deserialiser {
- getDeserialiser :: Plan (Decoder a)
- type Decoder = (->) ByteString
- serialiseOnly :: Serialise a => a -> ByteString
- getDecoder :: Serialise a => Schema -> Either StrategyError (Decoder a)
- getDecoderBy :: Deserialiser a -> Schema -> Either StrategyError (Decoder a)
- decodeCurrent :: forall a. Serialise a => Decoder a
- data Encoding
- encodeMulti :: (EncodingMulti -> EncodingMulti) -> Encoding
- getSize :: Encoding -> Int
- toByteString :: Encoding -> ByteString
- hPutEncoding :: Handle -> Encoding -> IO ()
- newtype Plan a = Plan {}
- extractArrayBy :: Deserialiser a -> Deserialiser (Int, Int -> a)
- extractListBy :: Deserialiser a -> Deserialiser [a]
- extractField :: Serialise a => Text -> Deserialiser a
- extractFieldBy :: Typeable a => Deserialiser a -> Text -> Deserialiser a
- extractConstructor :: Serialise a => Text -> Deserialiser (Maybe a)
- extractConstructorBy :: Typeable a => Deserialiser a -> Text -> Deserialiser (Maybe a)
- newtype VarInt a = VarInt {
- getVarInt :: a
- unwrapDeserialiser :: Deserialiser a -> Schema -> Strategy (Decoder a)
- data Strategy a
- type StrategyError = Doc AnsiStyle
- unexpectedSchema :: forall a. Serialise a => Doc AnsiStyle -> Schema -> Strategy (Decoder a)
- unexpectedSchema' :: Doc AnsiStyle -> Doc AnsiStyle -> Schema -> Strategy a
- class GSerialiseRecord f
- gschemaViaRecord :: forall proxy a. (GSerialiseRecord (Rep a), Generic a, Typeable a) => proxy a -> [TypeRep] -> Schema
- class GEncodeRecord f
- gtoEncodingRecord :: (GEncodeRecord (Rep a), Generic a) => a -> Encoding
- gdeserialiserRecord :: forall a. (GSerialiseRecord (Rep a), Generic a, Typeable a) => Maybe a -> Deserialiser a
- class GSerialiseVariant f
- gschemaViaVariant :: forall proxy a. (GSerialiseVariant (Rep a), Typeable a, Generic a) => proxy a -> [TypeRep] -> Schema
- gtoEncodingVariant :: (GSerialiseVariant (Rep a), Generic a) => a -> Encoding
- gdeserialiserVariant :: forall a. (GSerialiseVariant (Rep a), Generic a, Typeable a) => Deserialiser a
- bootstrapSchema :: Word8 -> Either StrategyError Schema
Documentation
SFix Schema | binds a fixpoint |
SSelf !Word8 |
|
SList !Schema | |
SArray !(VarInt Int) !Schema | |
SProduct [Schema] | |
SProductFixed [(VarInt Int, Schema)] | |
SRecord [(Text, Schema)] | |
SVariant [(Text, [Schema])] | |
SSchema !Word8 | |
SUnit | |
SBool | |
SChar | |
SWord8 | |
SWord16 | |
SWord32 | |
SWord64 | |
SInt8 | |
SInt16 | |
SInt32 | |
SInt64 | |
SInteger | |
SFloat | |
SDouble | |
SBytes | |
SText | |
SUTCTime |
Instances
class Typeable a => Serialise a where Source #
Serialisable datatype
schemaVia :: Proxy a -> [TypeRep] -> Schema Source #
Obtain the schema of the datatype. [TypeRep]
is for handling recursion.
toEncoding :: a -> Encoding Source #
Serialise a value.
deserialiser :: Deserialiser a Source #
The Deserialiser
constantSize :: Proxy a -> Maybe Int Source #
If this is
, the size of Just
xtoEncoding
must be x
.
deserialiser
must not depend on this value.
schemaVia :: (Generic a, GSerialiseVariant (Rep a)) => Proxy a -> [TypeRep] -> Schema Source #
Obtain the schema of the datatype. [TypeRep]
is for handling recursion.
toEncoding :: (Generic a, GSerialiseVariant (Rep a)) => a -> Encoding Source #
Serialise a value.
deserialiser :: (Generic a, GSerialiseVariant (Rep a)) => Deserialiser a Source #
The Deserialiser
Instances
data DecodeException Source #
Instances
Eq DecodeException Source # | |
Defined in Data.Winery.Internal (==) :: DecodeException -> DecodeException -> Bool # (/=) :: DecodeException -> DecodeException -> Bool # | |
Read DecodeException Source # | |
Defined in Data.Winery.Internal | |
Show DecodeException Source # | |
Defined in Data.Winery.Internal showsPrec :: Int -> DecodeException -> ShowS # show :: DecodeException -> String # showList :: [DecodeException] -> ShowS # | |
Exception DecodeException Source # | |
Defined in Data.Winery.Internal |
schema :: forall proxy a. Serialise a => proxy a -> Schema Source #
Obtain the schema of the datatype.
Standalone serialisation
toEncodingWithSchema :: Serialise a => a -> Encoding Source #
serialise :: Serialise a => a -> ByteString Source #
Serialise a value along with its schema.
deserialise :: Serialise a => ByteString -> Either StrategyError a Source #
Deserialise a serialise
d Bytestring
.
deserialiseBy :: Deserialiser a -> ByteString -> Either StrategyError a Source #
Deserialise a serialise
d Bytestring
.
splitSchema :: ByteString -> Either StrategyError (Schema, ByteString) Source #
writeFileSerialise :: Serialise a => FilePath -> a -> IO () Source #
Serialise a value along with its schema.
Separate serialisation
newtype Deserialiser a Source #
Deserialiser
is a Plan
that creates a Decoder
.
Deserialiser | |
|
Instances
Functor Deserialiser Source # | |
Defined in Data.Winery fmap :: (a -> b) -> Deserialiser a -> Deserialiser b # (<$) :: a -> Deserialiser b -> Deserialiser a # | |
Applicative Deserialiser Source # | |
Defined in Data.Winery pure :: a -> Deserialiser a # (<*>) :: Deserialiser (a -> b) -> Deserialiser a -> Deserialiser b # liftA2 :: (a -> b -> c) -> Deserialiser a -> Deserialiser b -> Deserialiser c # (*>) :: Deserialiser a -> Deserialiser b -> Deserialiser b # (<*) :: Deserialiser a -> Deserialiser b -> Deserialiser a # | |
Alternative Deserialiser Source # | |
Defined in Data.Winery empty :: Deserialiser a # (<|>) :: Deserialiser a -> Deserialiser a -> Deserialiser a # some :: Deserialiser a -> Deserialiser [a] # many :: Deserialiser a -> Deserialiser [a] # |
type Decoder = (->) ByteString Source #
serialiseOnly :: Serialise a => a -> ByteString Source #
Serialise a value without its schema.
getDecoder :: Serialise a => Schema -> Either StrategyError (Decoder a) Source #
Obtain a decoder from a schema.
getDecoderBy :: Deserialiser a -> Schema -> Either StrategyError (Decoder a) Source #
Get a decoder from a Deserialiser
and a schema.
decodeCurrent :: forall a. Serialise a => Decoder a Source #
Decode a value with the current schema.
Encoding combinators
encodeMulti :: (EncodingMulti -> EncodingMulti) -> Encoding Source #
toByteString :: Encoding -> ByteString Source #
Decoding combinators
extractArrayBy :: Deserialiser a -> Deserialiser (Int, Int -> a) Source #
extractListBy :: Deserialiser a -> Deserialiser [a] Source #
Extract a list or an array of values.
extractField :: Serialise a => Text -> Deserialiser a Source #
Extract a field of a record.
extractFieldBy :: Typeable a => Deserialiser a -> Text -> Deserialiser a Source #
Extract a field using the supplied Deserialiser
.
extractConstructor :: Serialise a => Text -> Deserialiser (Maybe a) Source #
extractConstructorBy :: Typeable a => Deserialiser a -> Text -> Deserialiser (Maybe a) Source #
Tries to extract a specific constructor of a variant. Useful for implementing backward-compatible deserialisers.
Variable-length quantity
Encoded in variable-length quantity.
Instances
Internal
unwrapDeserialiser :: Deserialiser a -> Schema -> Strategy (Decoder a) Source #
type StrategyError = Doc AnsiStyle Source #
unexpectedSchema :: forall a. Serialise a => Doc AnsiStyle -> Schema -> Strategy (Decoder a) Source #
Generics
class GSerialiseRecord f Source #
recordSchema, recordDecoder
Instances
GSerialiseRecord f => GSerialiseRecord (D1 c f :: k -> *) Source # | |
Defined in Data.Winery recordSchema :: proxy (D1 c f) -> [TypeRep] -> [(Text, Schema)] recordDecoder :: Maybe (D1 c f x) -> TransFusion (FieldDecoder Text) Decoder (Decoder (D1 c f x)) | |
GSerialiseRecord f => GSerialiseRecord (C1 c f :: k -> *) Source # | |
Defined in Data.Winery recordSchema :: proxy (C1 c f) -> [TypeRep] -> [(Text, Schema)] recordDecoder :: Maybe (C1 c f x) -> TransFusion (FieldDecoder Text) Decoder (Decoder (C1 c f x)) | |
(GSerialiseRecord f, GSerialiseRecord g) => GSerialiseRecord (f :*: g :: k -> *) Source # | |
Defined in Data.Winery recordSchema :: proxy (f :*: g) -> [TypeRep] -> [(Text, Schema)] recordDecoder :: Maybe ((f :*: g) x) -> TransFusion (FieldDecoder Text) Decoder (Decoder ((f :*: g) x)) | |
(Serialise a, Selector c) => GSerialiseRecord (S1 c (K1 i a :: k -> *) :: k -> *) Source # | |
Defined in Data.Winery |
gschemaViaRecord :: forall proxy a. (GSerialiseRecord (Rep a), Generic a, Typeable a) => proxy a -> [TypeRep] -> Schema Source #
Generic implementation of schemaVia
for a record.
class GEncodeRecord f Source #
recordEncoder
Instances
GEncodeRecord f => GEncodeRecord (D1 c f :: k -> *) Source # | |
Defined in Data.Winery recordEncoder :: D1 c f x -> EncodingMulti -> EncodingMulti | |
GEncodeRecord f => GEncodeRecord (C1 c f :: k -> *) Source # | |
Defined in Data.Winery recordEncoder :: C1 c f x -> EncodingMulti -> EncodingMulti | |
(GEncodeRecord f, GEncodeRecord g) => GEncodeRecord (f :*: g :: k -> *) Source # | |
Defined in Data.Winery recordEncoder :: (f :*: g) x -> EncodingMulti -> EncodingMulti | |
Serialise a => GEncodeRecord (S1 c (K1 i a :: k -> *) :: k -> *) Source # | |
Defined in Data.Winery recordEncoder :: S1 c (K1 i a) x -> EncodingMulti -> EncodingMulti |
gtoEncodingRecord :: (GEncodeRecord (Rep a), Generic a) => a -> Encoding Source #
Generic implementation of toEncoding
for a record.
:: (GSerialiseRecord (Rep a), Generic a, Typeable a) | |
=> Maybe a | default value (optional) |
-> Deserialiser a |
Generic implementation of deserialiser
for a record.
class GSerialiseVariant f Source #
variantCount, variantSchema, variantEncoder, variantDecoder
Instances
gschemaViaVariant :: forall proxy a. (GSerialiseVariant (Rep a), Typeable a, Generic a) => proxy a -> [TypeRep] -> Schema Source #
Generic implementation of schemaVia
for an ADT.
gtoEncodingVariant :: (GSerialiseVariant (Rep a), Generic a) => a -> Encoding Source #
Generic implementation of toEncoding
for an ADT.
gdeserialiserVariant :: forall a. (GSerialiseVariant (Rep a), Generic a, Typeable a) => Deserialiser a Source #
Generic implementation of deserialiser
for an ADT.