Copyright | (c) Soostone Inc 2020 |
---|---|
License | AllRightsReserved |
Stability | experimental |
Portability | POSIX |
Safe Haskell | Safe-Inferred |
Language | GHC2021 |
This module should be seen as an interpreter that takes the YAML version of a spec and converts it to a proper, fully typed Spec value.
In a sense, it's also a bit of a typechecker: YAML versions are necessarily dynamically typed and there's the possibility of type mismatches.
Synopsis
- newtype YamlParseError = YamlParseError Text
- type LoadYamlConstraint backend = (SpecBackend backend, Default (DbBackendOptions backend), Show (DbBackendOptions backend), Eq (BackendTableMeta backend), Show (BackendTableMeta backend), RunBackendEffect backend, RunBackendConn backend, DumpBackendRequirements backend, HasBackendQueryStats backend)
- loadYamlFile :: forall m a. MonadIO m => SpecFileWithOverrides -> (forall b. LoadYamlConstraint b => b -> YamlSpec b -> m a) -> m (Either NapkinError a)
- loadYamlFile' :: forall m a. (MonadError NapkinError m, MonadIO m) => SpecFileWithOverrides -> (forall b. LoadYamlConstraint b => b -> YamlSpec b -> m a) -> m a
- loadYaml' :: forall m a. Monad m => Value -> Maybe Patch -> (forall b. LoadYamlConstraint b => b -> YamlSpec b -> m a) -> m (Either Text a)
- loadHaskellModules :: forall bk m. (ToDbBackend bk, Typeable bk, MonadIO m) => InterpreterInstance -> YamlSpec bk -> m (Either HaskellEvaluationError ())
- interpretTables :: forall bk m. (ToDbBackend bk, Typeable bk, MonadIO m) => InterpreterInstance -> YamlSpec bk -> ExceptT HaskellEvaluationError m (SpecProgramArguments, Spec bk ())
- interpretHaskellSpec :: forall bk. (ToDbBackend bk, Typeable bk) => InterpreterInstance -> YamlSpec bk -> ExceptT HaskellEvaluationError (Spec bk) ()
- interpretYamlToSpec :: forall b m. (MonadIO m, ReifiesBackend b, ToDbBackend b, Typeable b) => LogEnv -> RuntimeEnv -> YamlSpec b -> SpecMetaArgs -> ExceptT NapkinError m (RawInterpretedSpec b)
- interpretYamlToSpec' :: forall b m. (MonadIO m, ToDbBackend b, Typeable b) => LogEnv -> RuntimeEnv -> YamlSpec b -> SpecMetaArgs -> ExceptT YamlSpecInterpretError m (RawInterpretedSpec b)
- interpretTable :: forall bk m. (MonadIO m, Typeable bk) => InterpreterInstance -> SpecTableName -> YamlTableSpec bk -> ExceptT HaskellEvaluationError m (SpecProgramArguments, Spec bk ())
- interpretSpec :: forall b. Typeable b => InterpreterInstance -> Typed (Spec b ()) ModuleFunction -> ExceptT HaskellEvaluationError (Spec b) ()
- evalHsFun :: forall m b. (Typeable b, MonadIO m) => InterpreterInstance -> Typed b ModuleFunction -> ExceptT HaskellEvaluationError m b
Documentation
newtype YamlParseError #
Instances
Exception YamlParseError # | |
Defined in Napkin.Spec.Yaml.Interpret | |
Show YamlParseError # | |
Defined in Napkin.Spec.Yaml.Interpret showsPrec :: Int -> YamlParseError -> ShowS # show :: YamlParseError -> String # showList :: [YamlParseError] -> ShowS # | |
Eq YamlParseError # | |
Defined in Napkin.Spec.Yaml.Interpret (==) :: YamlParseError -> YamlParseError -> Bool # (/=) :: YamlParseError -> YamlParseError -> Bool # |
type LoadYamlConstraint backend = (SpecBackend backend, Default (DbBackendOptions backend), Show (DbBackendOptions backend), Eq (BackendTableMeta backend), Show (BackendTableMeta backend), RunBackendEffect backend, RunBackendConn backend, DumpBackendRequirements backend, HasBackendQueryStats backend) #
loadYamlFile :: forall m a. MonadIO m => SpecFileWithOverrides -> (forall b. LoadYamlConstraint b => b -> YamlSpec b -> m a) -> m (Either NapkinError a) #
loadYamlFile' :: forall m a. (MonadError NapkinError m, MonadIO m) => SpecFileWithOverrides -> (forall b. LoadYamlConstraint b => b -> YamlSpec b -> m a) -> m a #
loadYaml' :: forall m a. Monad m => Value -> Maybe Patch -> (forall b. LoadYamlConstraint b => b -> YamlSpec b -> m a) -> m (Either Text a) #
loadHaskellModules :: forall bk m. (ToDbBackend bk, Typeable bk, MonadIO m) => InterpreterInstance -> YamlSpec bk -> m (Either HaskellEvaluationError ()) #
The main entry point interpreting a given YAML spec file as a
Spec
value ready to run via executeSpec
This function is intended to unroll/interpret as much as possible to get the spec in its final state ready to be actually run.
interpretTables :: forall bk m. (ToDbBackend bk, Typeable bk, MonadIO m) => InterpreterInstance -> YamlSpec bk -> ExceptT HaskellEvaluationError m (SpecProgramArguments, Spec bk ()) #
interpretHaskellSpec :: forall bk. (ToDbBackend bk, Typeable bk) => InterpreterInstance -> YamlSpec bk -> ExceptT HaskellEvaluationError (Spec bk) () #
interpretYamlToSpec :: forall b m. (MonadIO m, ReifiesBackend b, ToDbBackend b, Typeable b) => LogEnv -> RuntimeEnv -> YamlSpec b -> SpecMetaArgs -> ExceptT NapkinError m (RawInterpretedSpec b) #
interpretYamlToSpec' :: forall b m. (MonadIO m, ToDbBackend b, Typeable b) => LogEnv -> RuntimeEnv -> YamlSpec b -> SpecMetaArgs -> ExceptT YamlSpecInterpretError m (RawInterpretedSpec b) #
interpretTable :: forall bk m. (MonadIO m, Typeable bk) => InterpreterInstance -> SpecTableName -> YamlTableSpec bk -> ExceptT HaskellEvaluationError m (SpecProgramArguments, Spec bk ()) #
Main entry point for fully interpreting a given table's entry in the YAML file.
interpretSpec :: forall b. Typeable b => InterpreterInstance -> Typed (Spec b ()) ModuleFunction -> ExceptT HaskellEvaluationError (Spec b) () #
evalHsFun :: forall m b. (Typeable b, MonadIO m) => InterpreterInstance -> Typed b ModuleFunction -> ExceptT HaskellEvaluationError m b #