argo-0.2022.8.28: Parse and render JSON.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Argo

Synopsis

Documentation

data Value where Source #

A JSON (JavaScript Object Notation) value, as described by RFC 8259. https://datatracker.ietf.org/doc/html/rfc8259

Bundled Patterns

pattern Array :: [Value] -> Value 
pattern Boolean :: Bool -> Value 
pattern Null :: Value 
pattern Number :: Decimal -> Value 
pattern Object :: [Member Value] -> Value 
pattern String :: Text -> Value 

Instances

Instances details
HasCodec Value Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

IsString Value Source # 
Instance details

Defined in Argo.Internal.Json.Value

Methods

fromString :: String -> Value #

Show Value Source # 
Instance details

Defined in Argo.Internal.Json.Value

Methods

showsPrec :: Int -> Value -> ShowS #

show :: Value -> String #

showList :: [Value] -> ShowS #

NFData Value Source # 
Instance details

Defined in Argo.Internal.Json.Value

Methods

rnf :: Value -> () #

Eq Value Source # 
Instance details

Defined in Argo.Internal.Json.Value

Methods

(==) :: Value -> Value -> Bool #

(/=) :: Value -> Value -> Bool #

Lift Value Source # 
Instance details

Defined in Argo.Internal.Json.Value

Methods

lift :: Quote m => Value -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Value -> Code m Value #

Decoding

Encoding

Codecs

class Typeable a => HasCodec a where Source #

Methods

codec :: Value a Source #

Instances

Instances details
HasCodec Boolean Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Name Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value Name Source #

HasCodec Null Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value Null Source #

HasCodec Number Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec String Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Value Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Pointer Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Identifier Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Schema Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Decimal Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Int16 Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Int32 Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Int64 Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Int8 Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value Int8 Source #

HasCodec Word16 Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Word32 Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Word64 Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Word8 Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Text Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value Text Source #

HasCodec String Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Integer Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Natural Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec () Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value () Source #

HasCodec Bool Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value Bool Source #

HasCodec Char Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value Char Source #

HasCodec Double Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Float Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

HasCodec Int Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value Int Source #

HasCodec Word Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value Word Source #

HasCodec a => HasCodec (Array a) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (Array a) Source #

HasCodec a => HasCodec (Object a) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (Object a) Source #

HasCodec a => HasCodec (Nullable a) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (Nullable a) Source #

HasCodec a => HasCodec (NonEmpty a) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (NonEmpty a) Source #

HasCodec a => HasCodec (Maybe a) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (Maybe a) Source #

HasCodec a => HasCodec [a] Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value [a] Source #

(HasCodec a, HasCodec b) => HasCodec (Either a b) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (Either a b) Source #

HasCodec a => HasCodec (Map Name a) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (Map Name a) Source #

HasCodec a => HasCodec (Map String a) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (Map String a) Source #

HasCodec a => HasCodec (Map Text a) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (Map Text a) Source #

HasCodec a => HasCodec (Map String a) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (Map String a) Source #

(HasCodec a, HasCodec b) => HasCodec (a, b) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (a, b) Source #

(HasCodec a, HasCodec b, HasCodec c) => HasCodec (a, b, c) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (a, b, c) Source #

(HasCodec a, HasCodec b, HasCodec c, HasCodec d) => HasCodec (a, b, c, d) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (a, b, c, d) Source #

(HasCodec a, HasCodec b, HasCodec c, HasCodec d, HasCodec e) => HasCodec (a, b, c, d, e) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (a, b, c, d, e) Source #

(HasCodec a, HasCodec b, HasCodec c, HasCodec d, HasCodec e, HasCodec f) => HasCodec (a, b, c, d, e, f) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (a, b, c, d, e, f) Source #

(HasCodec a, HasCodec b, HasCodec c, HasCodec d, HasCodec e, HasCodec f, HasCodec g) => HasCodec (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (a, b, c, d, e, f, g) Source #

(HasCodec a, HasCodec b, HasCodec c, HasCodec d, HasCodec e, HasCodec f, HasCodec g, HasCodec h) => HasCodec (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (a, b, c, d, e, f, g, h) Source #

identified :: forall a. Typeable a => Value a -> Value a Source #

map :: (Functor r, Functor w) => (a -> b) -> (b -> a) -> Codec r w s a a -> Codec r w s b b Source #

mapMaybe :: (Alternative r, Alternative w, Monad r, Monad w) => (o2 -> Maybe o1) -> (i1 -> Maybe i2) -> Codec r w s i2 o2 -> Codec r w s i1 o1 Source #

project :: (i -> f) -> Codec r w s f o -> Codec r w s i o Source #

Arrays

element :: HasCodec o => (i -> o) -> Element i o Source #

Objects

required :: HasCodec f => (i -> f) -> Name -> Member i f Source #

optional :: HasCodec f => (i -> Maybe f) -> Name -> Member i (Maybe f) Source #

Schemas

schema :: Codec r w s i o -> s Source #

Pointers

Quasi Quoters

Types

type Codec a = Value a Source #

data Decimal where Source #

Bundled Patterns

pattern Decimal :: Integer -> Integer -> Decimal 

Instances

Instances details
HasCodec Decimal Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Show Decimal Source # 
Instance details

Defined in Argo.Internal.Type.Decimal

NFData Decimal Source # 
Instance details

Defined in Argo.Internal.Type.Decimal

Methods

rnf :: Decimal -> () #

Eq Decimal Source # 
Instance details

Defined in Argo.Internal.Type.Decimal

Methods

(==) :: Decimal -> Decimal -> Bool #

(/=) :: Decimal -> Decimal -> Bool #

Lift Decimal Source # 
Instance details

Defined in Argo.Internal.Type.Decimal

Methods

lift :: Quote m => Decimal -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Decimal -> Code m Decimal #

newtype Identifier Source #

Constructors

Identifier Text 

Instances

Instances details
HasCodec Identifier Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

IsString Identifier Source # 
Instance details

Defined in Argo.Internal.Schema.Identifier

Semigroup Identifier Source # 
Instance details

Defined in Argo.Internal.Schema.Identifier

Show Identifier Source # 
Instance details

Defined in Argo.Internal.Schema.Identifier

NFData Identifier Source # 
Instance details

Defined in Argo.Internal.Schema.Identifier

Methods

rnf :: Identifier -> () #

Eq Identifier Source # 
Instance details

Defined in Argo.Internal.Schema.Identifier

Ord Identifier Source # 
Instance details

Defined in Argo.Internal.Schema.Identifier

Lift Identifier Source # 
Instance details

Defined in Argo.Internal.Schema.Identifier

Methods

lift :: Quote m => Identifier -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Identifier -> Code m Identifier #

data Indent Source #

Constructors

Spaces Int 
Tab 

Instances

Instances details
Show Indent Source # 
Instance details

Defined in Argo.Internal.Type.Indent

Eq Indent Source # 
Instance details

Defined in Argo.Internal.Type.Indent

Methods

(==) :: Indent -> Indent -> Bool #

(/=) :: Indent -> Indent -> Bool #

data Member value Source #

Constructors

Member Name value 

Instances

Instances details
Show value => Show (Member value) Source # 
Instance details

Defined in Argo.Internal.Json.Member

Methods

showsPrec :: Int -> Member value -> ShowS #

show :: Member value -> String #

showList :: [Member value] -> ShowS #

NFData value => NFData (Member value) Source # 
Instance details

Defined in Argo.Internal.Json.Member

Methods

rnf :: Member value -> () #

Eq value => Eq (Member value) Source # 
Instance details

Defined in Argo.Internal.Json.Member

Methods

(==) :: Member value -> Member value -> Bool #

(/=) :: Member value -> Member value -> Bool #

Lift value => Lift (Member value :: Type) Source # 
Instance details

Defined in Argo.Internal.Json.Member

Methods

lift :: Quote m => Member value -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Member value -> Code m (Member value) #

data Name where Source #

Bundled Patterns

pattern Name :: Text -> Name 

Instances

Instances details
HasCodec Name Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value Name Source #

IsString Name Source # 
Instance details

Defined in Argo.Internal.Json.Name

Methods

fromString :: String -> Name #

Show Name Source # 
Instance details

Defined in Argo.Internal.Json.Name

Methods

showsPrec :: Int -> Name -> ShowS #

show :: Name -> String #

showList :: [Name] -> ShowS #

NFData Name Source # 
Instance details

Defined in Argo.Internal.Json.Name

Methods

rnf :: Name -> () #

Eq Name Source # 
Instance details

Defined in Argo.Internal.Json.Name

Methods

(==) :: Name -> Name -> Bool #

(/=) :: Name -> Name -> Bool #

Ord Name Source # 
Instance details

Defined in Argo.Internal.Json.Name

Methods

compare :: Name -> Name -> Ordering #

(<) :: Name -> Name -> Bool #

(<=) :: Name -> Name -> Bool #

(>) :: Name -> Name -> Bool #

(>=) :: Name -> Name -> Bool #

max :: Name -> Name -> Name #

min :: Name -> Name -> Name #

Lift Name Source # 
Instance details

Defined in Argo.Internal.Json.Name

Methods

lift :: Quote m => Name -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Name -> Code m Name #

HasCodec a => HasCodec (Map Name a) Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Methods

codec :: Value (Map Name a) Source #

data Permission Source #

Constructors

Allow 
Forbid 

Instances

Instances details
Show Permission Source # 
Instance details

Defined in Argo.Internal.Type.Permission

NFData Permission Source # 
Instance details

Defined in Argo.Internal.Type.Permission

Methods

rnf :: Permission -> () #

Eq Permission Source # 
Instance details

Defined in Argo.Internal.Type.Permission

Lift Permission Source # 
Instance details

Defined in Argo.Internal.Type.Permission

Methods

lift :: Quote m => Permission -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Permission -> Code m Permission #

newtype Pointer Source #

A JSON pointer, as described by RFC 6901. https://datatracker.ietf.org/doc/html/rfc6901

Constructors

Pointer [Token] 

Instances

Instances details
HasCodec Pointer Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Show Pointer Source # 
Instance details

Defined in Argo.Internal.Pointer.Pointer

NFData Pointer Source # 
Instance details

Defined in Argo.Internal.Pointer.Pointer

Methods

rnf :: Pointer -> () #

Eq Pointer Source # 
Instance details

Defined in Argo.Internal.Pointer.Pointer

Methods

(==) :: Pointer -> Pointer -> Bool #

(/=) :: Pointer -> Pointer -> Bool #

Lift Pointer Source # 
Instance details

Defined in Argo.Internal.Pointer.Pointer

Methods

lift :: Quote m => Pointer -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Pointer -> Code m Pointer #

data Schema Source #

Instances

Instances details
HasCodec Schema Source # 
Instance details

Defined in Argo.Internal.Class.HasCodec

Monoid Schema Source # 
Instance details

Defined in Argo.Internal.Schema.Schema

Semigroup Schema Source # 
Instance details

Defined in Argo.Internal.Schema.Schema

Show Schema Source # 
Instance details

Defined in Argo.Internal.Schema.Schema

NFData Schema Source # 
Instance details

Defined in Argo.Internal.Schema.Schema

Methods

rnf :: Schema -> () #

Eq Schema Source # 
Instance details

Defined in Argo.Internal.Schema.Schema

Methods

(==) :: Schema -> Schema -> Bool #

(/=) :: Schema -> Schema -> Bool #

Lift Schema Source # 
Instance details

Defined in Argo.Internal.Schema.Schema

Methods

lift :: Quote m => Schema -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Schema -> Code m Schema #

newtype Token Source #

Constructors

Token Text 

Instances

Instances details
IsString Token Source # 
Instance details

Defined in Argo.Internal.Pointer.Token

Methods

fromString :: String -> Token #

Show Token Source # 
Instance details

Defined in Argo.Internal.Pointer.Token

Methods

showsPrec :: Int -> Token -> ShowS #

show :: Token -> String #

showList :: [Token] -> ShowS #

NFData Token Source # 
Instance details

Defined in Argo.Internal.Pointer.Token

Methods

rnf :: Token -> () #

Eq Token Source # 
Instance details

Defined in Argo.Internal.Pointer.Token

Methods

(==) :: Token -> Token -> Bool #

(/=) :: Token -> Token -> Bool #

Lift Token Source # 
Instance details

Defined in Argo.Internal.Pointer.Token

Methods

lift :: Quote m => Token -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Token -> Code m Token #