Copyright | 2019 Daniel YU |
---|---|
License | BSD3 |
Maintainer | leptonyu@gmail.com |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
This module is used for implementing loaders.
Synopsis
- loadAndRunSalak' :: (MonadThrow m, MonadIO m) => LoadSalakT m () -> (SourcePack -> m a) -> m a
- loadTrie :: (MonadThrow m, MonadIO m) => Bool -> String -> (Int -> IO TraceSource) -> LoadSalakT m ()
- loadList :: (MonadThrow m, MonadIO m, Foldable f, ToKeys k, ToValue v) => Bool -> String -> IO (f (k, v)) -> LoadSalakT m ()
- data LoadSalakT m a
- type LoadSalak = LoadSalakT IO
- data RunSalakT m a
- type RunSalak = RunSalakT IO
- runRun :: Monad m => RunSalakT m a -> SourcePack -> m a
- class Monad m => MonadSalak m where
- askSalak :: m SourcePack
- askReload :: MonadSalak m => m (IO ReloadResult)
- require :: (MonadThrow m, FromProp m a) => Text -> m a
- loadMock :: (MonadThrow m, MonadIO m) => [(Text, Text)] -> LoadSalakT m ()
- loadEnv :: (MonadThrow m, MonadIO m) => LoadSalakT m ()
- loadCommandLine :: (MonadThrow m, MonadIO m) => ParseCommandLine -> LoadSalakT m ()
- type ParseCommandLine = [String] -> IO [(Text, Text)]
- defaultParseCommandLine :: ParseCommandLine
- tryLoadFile :: MonadIO m => (FilePath -> LoadSalakT m ()) -> FilePath -> LoadSalakT m ()
- type Source = Trie Vals
- type TraceSource = Trie ([String], Vals)
- newtype Keys = Keys {}
- data Key
- simpleKeys :: Text -> [Key]
- class ToKeys a where
- setVal :: ToValue v => Int -> v -> TraceSource -> TraceSource
- data Val v = Val !Int !v
- data Value
- class ToValue a where
- liftNT :: MonadIO m => LoadSalak () -> LoadSalakT m ()
- data SourcePack = SourcePack {}
- class Monad m => MonadIO (m :: Type -> Type)
Documentation
loadAndRunSalak' :: (MonadThrow m, MonadIO m) => LoadSalakT m () -> (SourcePack -> m a) -> m a Source #
Standard salak functions, by load and with a SourcePack
instance.
Users should use SourcePack
to create custom MonadSalak
instances, then you get will an instance of MonadSalak
.
loadTrie :: (MonadThrow m, MonadIO m) => Bool -> String -> (Int -> IO TraceSource) -> LoadSalakT m () Source #
Basic loader
loadList :: (MonadThrow m, MonadIO m, Foldable f, ToKeys k, ToValue v) => Bool -> String -> IO (f (k, v)) -> LoadSalakT m () Source #
Simple loader
data LoadSalakT m a Source #
Configuration Loader Monad, used for load properties from sources. Custom loaders using loadTrie
Instances
type LoadSalak = LoadSalakT IO Source #
Simple IO Monad
Standard MonadSalak
instance.
Instances
MonadTrans RunSalakT Source # | |
Defined in Salak.Internal | |
Monad m => MonadReader SourcePack (RunSalakT m) Source # | |
Defined in Salak.Internal ask :: RunSalakT m SourcePack # local :: (SourcePack -> SourcePack) -> RunSalakT m a -> RunSalakT m a # reader :: (SourcePack -> a) -> RunSalakT m a # | |
Monad m => Monad (RunSalakT m) Source # | |
Functor m => Functor (RunSalakT m) Source # | |
Applicative m => Applicative (RunSalakT m) Source # | |
Defined in Salak.Internal | |
MonadIO m => MonadIO (RunSalakT m) Source # | |
Defined in Salak.Internal | |
MonadThrow m => MonadThrow (RunSalakT m) Source # | |
Defined in Salak.Internal | |
MonadCatch m => MonadCatch (RunSalakT m) Source # | |
(MonadThrow m, MonadUnliftIO m) => MonadUnliftIO (RunSalakT m) Source # | |
Defined in Salak.Internal | |
Monad m => MonadSalak (RunSalakT m) Source # | |
class Monad m => MonadSalak m where Source #
Core type class of salak, which provide function to parse properties.
askSalak :: m SourcePack Source #
Monad has the ability to get a SourcePack
instance.
askReload :: MonadSalak m => m (IO ReloadResult) Source #
Get reload action which used for reload profiles
require :: (MonadThrow m, FromProp m a) => Text -> m a Source #
Parse properties using FromProp
. For example:
a :: Bool <- require "bool.key" b :: Maybe Int <- require "int.optional.key" c :: Either String Int <- require "int.error.key" d :: IO Int <- require "int.reloadable.key"
require
supports parse IO
values, which actually wrap a MVar
variable and can be reseted by reloading configurations.
Normal value will not be affected by reloading configurations.
Instances
(m ~ t m', Monad m', Monad m, MonadTrans t, MonadSalak m') => MonadSalak m Source # | |
Defined in Salak.Internal.Prop askSalak :: m SourcePack Source # askReload :: m (IO ReloadResult) Source # require :: (MonadThrow m, FromProp m a) => Text -> m a Source # | |
Monad m => MonadSalak (Prop m) Source # | |
Monad m => MonadSalak (RunSalakT m) Source # | |
MonadIO m => MonadSalak (LoadSalakT m) Source # | |
Defined in Salak.Internal askSalak :: LoadSalakT m SourcePack Source # askReload :: LoadSalakT m (IO ReloadResult) Source # require :: (MonadThrow (LoadSalakT m), FromProp (LoadSalakT m) a) => Text -> LoadSalakT m a Source # |
loadMock :: (MonadThrow m, MonadIO m) => [(Text, Text)] -> LoadSalakT m () Source #
Load mock variables into Source
loadEnv :: (MonadThrow m, MonadIO m) => LoadSalakT m () Source #
Load environment variables into Source
loadCommandLine :: (MonadThrow m, MonadIO m) => ParseCommandLine -> LoadSalakT m () Source #
Default way to parse command line arguments
defaultParseCommandLine :: ParseCommandLine Source #
Default way to parse command line arguments
tryLoadFile :: MonadIO m => (FilePath -> LoadSalakT m ()) -> FilePath -> LoadSalakT m () Source #
Try load file, if file does not exist then do nothing.
type TraceSource = Trie ([String], Vals) Source #
simpleKeys :: Text -> [Key] Source #
setVal :: ToValue v => Int -> v -> TraceSource -> TraceSource Source #
VT !Text | |
VI !Scientific | |
VB !Bool | |
VLT !LocalTime | |
VD !Day | |
VH !TimeOfDay | |
VZT !TimeZone !LocalTime | |
VU !UTCTime |
class ToValue a where Source #
Instances
ToValue Bool Source # | |
ToValue Double Source # | |
ToValue Int Source # | |
ToValue Int64 Source # | |
ToValue Integer Source # | |
ToValue ByteString Source # | |
Defined in Salak.Internal.Val toVal :: ByteString -> Value Source # | |
ToValue Text Source # | |
ToValue String Source # | |
ToValue Scientific Source # | |
Defined in Salak.Internal.Val toVal :: Scientific -> Value Source # | |
ToValue UTCTime Source # | |
ToValue Value Source # | |
data SourcePack Source #
Instances
Monad m => MonadReader SourcePack (Prop m) Source # | |
Defined in Salak.Internal.Prop ask :: Prop m SourcePack # local :: (SourcePack -> SourcePack) -> Prop m a -> Prop m a # reader :: (SourcePack -> a) -> Prop m a # | |
Monad m => MonadReader SourcePack (RunSalakT m) Source # | |
Defined in Salak.Internal ask :: RunSalakT m SourcePack # local :: (SourcePack -> SourcePack) -> RunSalakT m a -> RunSalakT m a # reader :: (SourcePack -> a) -> RunSalakT m a # |
class Monad m => MonadIO (m :: Type -> Type) #
Monads in which IO
computations may be embedded.
Any monad built by applying a sequence of monad transformers to the
IO
monad will be an instance of this class.
Instances should satisfy the following laws, which state that liftIO
is a transformer of monads: