-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A simple library for dynamically enabling and disabling functionality. -- @package feature-flags @version 0.1.0.1 -- | A small utility module that provides a foundation for dynamically -- enabling and disabling features. module Control.FeatureFlag -- | A simple toggle for selectively enabling or disabling functionality. data FeatureToggle a Enabled :: FeatureToggle a Disabled :: FeatureToggle a -- | A union of different feature providers which maintains a currently -- active provider and facilities for changing providers. -- -- Use this when you don't need to disable a feature, just to replace the -- implementation. data FeatureProvider a FeatureProvider :: a -> Text -> [(Text, a)] -> a -> FeatureProvider a enabledProvider :: FeatureProvider a -> a enabledProviderName :: FeatureProvider a -> Text availableProviders :: FeatureProvider a -> [(Text, a)] defaultProvider :: FeatureProvider a -> a -- | Enable a feature. enable :: FeatureToggle a -> FeatureToggle a -- | Disable a feature. disable :: FeatureToggle a -> FeatureToggle a -- | Flip a toggle from enabled to disabled or vice versa. toggle :: FeatureToggle a -> FeatureToggle a -- | Switch on values depending on whether a toggle is enabled or disabled. withToggle :: FeatureToggle a -> b -> b -> b -- | Execute an action only when the specified feature is enabled. whenEnabled :: (Functor m, Monad m) => FeatureToggle a -> m b -> m () -- | Execute an action only when the specified feature is disabled. whenDisabled :: (Functor m, Monad m) => FeatureToggle a -> m b -> m () -- | Replace the current feature provider with another provider. Returns -- Left if the default provider is used due to a failed lookup. Returns -- Right if the lookup succeeded. -- -- Use "default" as the lookup value if you want to explicitly load the -- default provider. use :: Text -> FeatureProvider a -> Either (FeatureProvider a) (FeatureProvider a) -- | Apply a function that takes a feature provided by a -- FeatureProvider. withProvider :: FeatureProvider a -> (a -> b) -> b instance Read (FeatureToggle a) instance Show (FeatureToggle a) instance Eq (FeatureToggle a)