aeson-schema-0.4.1.2: Haskell JSON schema validator and parser generator

Safe HaskellNone
LanguageHaskell98

Data.Aeson.Schema.CodeGenM

Contents

Synopsis

Documentation

data Declaration Source #

A top-level declaration.

Constructors

Declaration Dec (Maybe Text)

Optional textual declaration. This can be used for information (e.g. inline comments) that are not representable in TH.

Comment Text

Comment text

Instances
Eq Declaration Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

Data Declaration Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Declaration -> c Declaration #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Declaration #

toConstr :: Declaration -> Constr #

dataTypeOf :: Declaration -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Declaration) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Declaration) #

gmapT :: (forall b. Data b => b -> b) -> Declaration -> Declaration #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Declaration -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Declaration -> r #

gmapQ :: (forall d. Data d => d -> u) -> Declaration -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Declaration -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Declaration -> m Declaration #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Declaration -> m Declaration #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Declaration -> m Declaration #

Show Declaration Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

MonadWriter Code (CodeGenM s) Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

Methods

writer :: (a, Code) -> CodeGenM s a #

tell :: Code -> CodeGenM s () #

listen :: CodeGenM s a -> CodeGenM s (a, Code) #

pass :: CodeGenM s (a, Code -> Code) -> CodeGenM s a #

type Code = [Declaration] Source #

 Haskell code (without module declaration and imports)

newtype CodeGenM s a Source #

Constructors

CodeGenM 

Fields

Instances
MonadWriter Code (CodeGenM s) Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

Methods

writer :: (a, Code) -> CodeGenM s a #

tell :: Code -> CodeGenM s () #

listen :: CodeGenM s a -> CodeGenM s (a, Code) #

pass :: CodeGenM s (a, Code -> Code) -> CodeGenM s a #

Monad (CodeGenM s) Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

Methods

(>>=) :: CodeGenM s a -> (a -> CodeGenM s b) -> CodeGenM s b #

(>>) :: CodeGenM s a -> CodeGenM s b -> CodeGenM s b #

return :: a -> CodeGenM s a #

fail :: String -> CodeGenM s a #

Functor (CodeGenM s) Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

Methods

fmap :: (a -> b) -> CodeGenM s a -> CodeGenM s b #

(<$) :: a -> CodeGenM s b -> CodeGenM s a #

MonadFail (CodeGenM s) Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

Methods

fail :: String -> CodeGenM s a #

Applicative (CodeGenM s) Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

Methods

pure :: a -> CodeGenM s a #

(<*>) :: CodeGenM s (a -> b) -> CodeGenM s a -> CodeGenM s b #

liftA2 :: (a -> b -> c) -> CodeGenM s a -> CodeGenM s b -> CodeGenM s c #

(*>) :: CodeGenM s a -> CodeGenM s b -> CodeGenM s b #

(<*) :: CodeGenM s a -> CodeGenM s b -> CodeGenM s a #

MonadIO (CodeGenM s) Source #

Generates a record data declaration where the fields may have descriptions for Haddock

Instance details

Defined in Data.Aeson.Schema.CodeGenM

Methods

liftIO :: IO a -> CodeGenM s a #

Quasi (CodeGenM s) Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

MonadReader (Options, s) (CodeGenM s) Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

Methods

ask :: CodeGenM s (Options, s) #

local :: ((Options, s) -> (Options, s)) -> CodeGenM s a -> CodeGenM s a #

reader :: ((Options, s) -> a) -> CodeGenM s a #

renderDeclaration :: Declaration -> Text Source #

 Render a declaration. When a declaration contains both a TH syntax tree and a text representation, the text representation is preferred.

codeGenNewName :: String -> StringSet -> (Name, StringSet) Source #

 Generates a fresh name

genRecord Source #

Arguments

:: Name

Type and constructor name

-> [(Name, TypeQ, Maybe Text)]

Fields

-> [Name]

Deriving typeclasses

-> Q Declaration 

Customising the codegen

data Options Source #

Extra options used for the codegen

Constructors

Options 

Fields

Instances
MonadReader (Options, s) (CodeGenM s) Source # 
Instance details

Defined in Data.Aeson.Schema.CodeGenM

Methods

ask :: CodeGenM s (Options, s) #

local :: ((Options, s) -> (Options, s)) -> CodeGenM s a -> CodeGenM s a #

reader :: ((Options, s) -> a) -> CodeGenM s a #