module Conferer.Provider.Namespaced where import Data.List (stripPrefix) import Conferer.Types mkNamespacedProvider :: Key -> ProviderCreator -> ProviderCreator mkNamespacedProvider (Path key) configCreator = \config -> do configProvider <- configCreator config return $ Provider { getKeyInProvider = \(Path k) -> do case stripPrefix key k of Just newKey -> getKeyInProvider configProvider (Path newKey) Nothing -> return Nothing }