Safe Haskell | None |
---|---|
Language | Haskell2010 |
- newtype JsonParser a = JsonParser {}
- newtype JsonBuilder a = JsonBuilder {
- runBuilder :: a -> Either String Value
- is :: (JsonSyntax s, Eq a) => s a -> a -> s ()
- wat :: JsonSyntax s => a -> s a
- jsonField :: JsonSyntax s => Text -> s v -> s v
- jsonString :: JsonSyntax s => s Text
- jsonBool :: JsonSyntax s => s Bool
- jsonNumber :: JsonSyntax s => s Scientific
- jsonIntegral :: (Integral a, JsonSyntax s) => s a
- jsonRealFloat :: (RealFloat a, JsonSyntax s) => s a
- demote :: String -> Prism' a b -> Iso a b
- demoteLR :: (Show a, Show b) => String -> Prism' a b -> Iso a b
- demoteL :: Show a => String -> Prism' a b -> Iso a b
- demoteR :: Show b => String -> Prism' a b -> Iso a b
- class Syntax s => JsonSyntax s where
Parser/Builder
newtype JsonParser a Source
An implementation of JsonSyntax
which deconstructs JSON values.
newtype JsonBuilder a Source
An implementation of JsonSyntax
which constructs JSON values.
JsonBuilder | |
|
Combinators
is :: (JsonSyntax s, Eq a) => s a -> a -> s () Source
Ensure that a value a
is "produced" or "consumed".
This is intended to be used infix in conjunction with *> and <*
wat :: JsonSyntax s => a -> s a Source
With Arbitrary Thing: Given a thing, ensure that it is always included on the way "back" from JSON, but never ends up in the JSON document.
This is almost like pure, going one way.
Syntaxes
:: JsonSyntax s | |
=> Text | Key to lookup/insert |
-> s v | Sub-parser |
-> s v |
Un-/parse from within a field in a JSON object.
jsonString :: JsonSyntax s => s Text Source
Un-/parse a string JSON value.
jsonBool :: JsonSyntax s => s Bool Source
Un-/parse a boolean JSON value.
jsonNumber :: JsonSyntax s => s Scientific Source
Un-/parse a number JSON value.
jsonIntegral :: (Integral a, JsonSyntax s) => s a Source
Un-/parse an integral number JSON value.
jsonRealFloat :: (RealFloat a, JsonSyntax s) => s a Source
Un-/parse a floating number JSON value.
Lenses, Prisms, and Isomorphisms.
demoteLR :: (Show a, Show b) => String -> Prism' a b -> Iso a b Source
Demote something with show instances for better messages.