Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- loadAndRunSalak' :: (MonadThrow m, MonadIO m) => LoadSalakT m () -> (SourcePack -> m a) -> m a
- loadTrie :: MonadIO m => Bool -> String -> (Int -> IO TraceSource) -> LoadSalakT m ()
- loadList :: (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
- runRunSalak :: SourcePack -> RunSalakT m a -> m a
- class HasSalak m where
- class Monad m => MonadSalak m where
- askSalak :: m SourcePack
- loadMock :: MonadIO m => [(Text, Text)] -> LoadSalakT m ()
- loadEnv :: MonadIO m => LoadSalakT m ()
- loadCommandLine :: 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 HasSalak
.
loadTrie :: MonadIO m => Bool -> String -> (Int -> IO TraceSource) -> LoadSalakT m () Source #
Basic loader
loadList :: (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 HasSalak
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 # | |
MonadUnliftIO m => MonadUnliftIO (RunSalakT m) Source # | |
Defined in Salak.Internal | |
Monad m => MonadSalak (RunSalakT m) Source # | |
Defined in Salak.Internal askSalak :: RunSalakT m SourcePack Source # |
runRunSalak :: SourcePack -> RunSalakT m a -> m a Source #
class HasSalak m where Source #
Core type class of salak, which provide function to parse properties.
require :: 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"
Instances
(MonadThrow m, MonadSalak m) => HasSalak m Source # | |
class Monad m => MonadSalak m where Source #
Monad has the ability to get a SourcePack
instance.
askSalak :: m SourcePack Source #
Instances
(m' ~ t (RunSalakT m), MonadTrans t, Monad m, Monad m') => MonadSalak m' Source # | |
Defined in Salak.Internal askSalak :: m' SourcePack Source # | |
Monad m => MonadSalak (Prop m) Source # | |
Defined in Salak.Internal.Prop askSalak :: Prop m SourcePack Source # | |
Monad m => MonadSalak (RunSalakT m) Source # | |
Defined in Salak.Internal askSalak :: RunSalakT m SourcePack Source # | |
MonadIO m => MonadSalak (LoadSalakT m) Source # | |
Defined in Salak.Internal askSalak :: LoadSalakT m SourcePack Source # |
loadCommandLine :: 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:
Instances
Orphan instances
(m' ~ t (RunSalakT m), MonadTrans t, Monad m, Monad m') => MonadSalak m' Source # | |
askSalak :: m' SourcePack Source # |