Copyright | (c) Duncan Coutts 2015-2017 |
---|---|
License | BSD3-style (see LICENSE.txt) |
Maintainer | duncan@community.haskell.org |
Stability | experimental |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell2010 |
This module provides an interface for decoding and encoding arbitrary CBOR values (ones that, for example, may not have been generated by this library).
Using
decodeTerm
, you can decode an arbitrary CBOR value given to you
into a
Term
, which represents a CBOR value as an AST.
Similarly, if you wanted to encode some value into a CBOR value directly,
you can wrap it in a
Term
constructor and use
encodeTerm
. This
would be useful, as an example, if you needed to serialise some value into
a CBOR term that is not compatible with that types
Serialise
instance.
Because this interface gives you the ability to decode or encode any
arbitrary CBOR term, it can also be seen as an alternative interface to the
Encoding
and
Decoding
modules.
Synopsis
-
data
Term
- = TInt ! Int
- | TInteger ! Integer
- | TBytes ! ByteString
- | TBytesI ! ByteString
- | TString ! Text
- | TStringI ! Text
- | TList ![ Term ]
- | TListI ![ Term ]
- | TMap ![( Term , Term )]
- | TMapI ![( Term , Term )]
- | TTagged ! Word64 ! Term
- | TBool ! Bool
- | TNull
- | TSimple ! Word8
- | THalf ! Float
- | TFloat ! Float
- | TDouble ! Double
- encodeTerm :: Term -> Encoding
- decodeTerm :: Decoder s Term
Documentation
A general CBOR term, which can be used to serialise or deserialise arbitrary CBOR terms for interoperability or debugging. This type is essentially a direct reflection of the CBOR abstract syntax tree as a Haskell data type.
The
Term
type also comes with a
Serialise
instance, so you can
easily use
to directly decode any arbitrary
CBOR value into Haskell with ease, and likewise with
decode
::
Decoder
Term
encode
.
Since: 0.2.0.0
TInt ! Int | |
TInteger ! Integer | |
TBytes ! ByteString | |
TBytesI ! ByteString | |
TString ! Text | |
TStringI ! Text | |
TList ![ Term ] | |
TListI ![ Term ] | |
TMap ![( Term , Term )] | |
TMapI ![( Term , Term )] | |
TTagged ! Word64 ! Term | |
TBool ! Bool | |
TNull | |
TSimple ! Word8 | |
THalf ! Float | |
TFloat ! Float | |
TDouble ! Double |
encodeTerm :: Term -> Encoding Source #