dep-t-value-0.1.0.0: Pair resources files with types within your program.
Safe HaskellNone
LanguageHaskell2010

Dep.Loader

Description

Define resource Loaders and wire them into Values.

Typically, this module only needs to be imported when creating the global application environment.

Synopsis

Resource loader.

newtype Loader v m Source #

Constructors

Loader 

Fields

Instances

Instances details
Generic (Loader v m) Source # 
Instance details

Defined in Dep.Loader

Associated Types

type Rep (Loader v m) :: Type -> Type #

Methods

from :: Loader v m -> Rep (Loader v m) x #

to :: Rep (Loader v m) x -> Loader v m #

Monad m => Semigroup (Loader v m) Source #

The left Loader is consulted first.

Instance details

Defined in Dep.Loader

Methods

(<>) :: Loader v m -> Loader v m -> Loader v m #

sconcat :: NonEmpty (Loader v m) -> Loader v m #

stimes :: Integral b => b -> Loader v m -> Loader v m #

Monad m => Monoid (Loader v m) Source # 
Instance details

Defined in Dep.Loader

Methods

mempty :: Loader v m #

mappend :: Loader v m -> Loader v m -> Loader v m #

mconcat :: [Loader v m] -> Loader v m #

type Rep (Loader v m) Source # 
Instance details

Defined in Dep.Loader

type Rep (Loader v m) = D1 ('MetaData "Loader" "Dep.Loader" "dep-t-value-0.1.0.0-9HathWkr8833kq2ESFmsQK" 'True) (C1 ('MetaCons "Loader" 'PrefixI 'True) (S1 ('MetaSel ('Just "loadMaybe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ResourceKey -> m (Maybe v)))))

load :: forall r v m. (FromResource r, Typeable r, Typeable v, Monad m) => Loader v m -> m v Source #

Datatypes tied to resources.

class FromResource a where Source #

Class for datatypes tied to resources.

Derive it with DeriveAnyClass. The datatype must have a GHC.Generics.Generic instance.

Minimal complete definition

Nothing

Methods

resourceKey :: ResourceKey Source #

default resourceKey :: forall name mod p n nt x. (Generic a, Rep a ~ D1 ('MetaData name mod p nt) x, KnownSymbol name, KnownSymbol mod) => ResourceKey Source #

Loaders for resources in a directory.

dataDirLoader :: MonadIO m => [FileExtension] -> DataDir -> Loader ByteString m Source #

A dataDirLoader ["js", "json"] (dataDir "conf") Loader will, for a datatype Baz defined in module Foo.Bar, look for the files conf/Foo/Bar/Baz.js and conf/Foo/Bar/Baz.json, in that order.

type DataDir = FilePath -> IO FilePath Source #

Function that completes a relative FilePath pointing to a data file, and returns its absolute path.

The getDataFileName function from Paths_pkgname is a valid DataDir. You can also create a DataDir by using dataDir.

dataDir :: FilePath -> DataDir Source #

Build a DataDir out of a base directory path.

extendDataDir :: DataDir -> FilePath -> DataDir Source #

Given a relative path to a subdirectory of a DataDir, return a DataDir that completes paths within that subdirectory.