{-# OPTIONS_HADDOCK hide #-} ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.ExtScheme -- Copyright : (c) Niklas Broberg 2009 -- License : BSD-style (see the file LICENSE.txt) -- -- Maintainer : Niklas Broberg, d00nibro@chalmers.se -- Stability : stable -- Portability : portable -- -- Internal scheme for handling extensions in a -- convenient fashion. -- ----------------------------------------------------------------------------- module Language.Haskell.Exts.ExtScheme where import Language.Haskell.Exts.Extension data ExtScheme = Any [Extension] | All [Extension] deriving (Eq,Show) type MExtScheme = Maybe ExtScheme class Enabled a where isEnabled :: a -> [Extension] -> Bool instance Enabled Extension where isEnabled = elem instance Enabled ExtScheme where isEnabled (Any exts) enabled = any (`elem` enabled) exts isEnabled (All exts) enabled = all (`elem` enabled) exts instance Enabled a => Enabled (Maybe a) where isEnabled Nothing = const True isEnabled (Just a) = isEnabled a