| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Salak.Internal
Contents
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 Methods 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 Methods 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.
Methods
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.
Methods
askSalak :: m SourcePack Source #
Instances
| (m' ~ t (RunSalakT m), MonadTrans t, Monad m, Monad m') => MonadSalak m' Source # | |
Defined in Salak.Internal Methods askSalak :: m' SourcePack Source # | |
| Monad m => MonadSalak (Prop m) Source # | |
Defined in Salak.Internal.Prop Methods askSalak :: Prop m SourcePack Source # | |
| Monad m => MonadSalak (RunSalakT m) Source # | |
Defined in Salak.Internal Methods askSalak :: RunSalakT m SourcePack Source # | |
| MonadIO m => MonadSalak (LoadSalakT m) Source # | |
Defined in Salak.Internal Methods 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 #
Constructors
| 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 Methods toVal :: ByteString -> Value Source # | |
| ToValue Text Source # | |
| ToValue String Source # | |
| ToValue Scientific Source # | |
Defined in Salak.Internal.Val Methods toVal :: Scientific -> Value Source # | |
| ToValue UTCTime Source # | |
| ToValue Value Source # | |
data SourcePack Source #
Constructors
| SourcePack | |
Instances
| Monad m => MonadReader SourcePack (Prop m) Source # | |
Defined in Salak.Internal.Prop Methods 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 Methods 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:
Minimal complete definition
Instances
Orphan instances
| (m' ~ t (RunSalakT m), MonadTrans t, Monad m, Monad m') => MonadSalak m' Source # | |
Methods askSalak :: m' SourcePack Source # | |