module Conferer.Provider.Mapping
(
mkMappingProvider
, mkMappingProvider'
)
where
import Data.Map (Map)
import qualified Data.Map as Map
import Conferer.Types
mkMappingProvider' :: (Key -> Maybe Key) -> ProviderCreator -> ProviderCreator
mkMappingProvider' mapper providerCreator config = do
configProvider <- providerCreator config
return $ Provider
{ getKeyInProvider = \k -> do
case mapper k of
Just newKey -> getKeyInProvider configProvider newKey
Nothing -> return Nothing
}
mkMappingProvider :: Map Key Key -> ProviderCreator -> ProviderCreator
mkMappingProvider configMap configProvider =
mkMappingProvider' (`Map.lookup` configMap) configProvider