merge_optional )
where
-import Data.Monoid ( Monoid(..) )
+-- System imports.
import System.Console.CmdArgs.Default ( Default(..) )
--- From the harbl library.
+-- Harbl library imports.
import Network.DNS.RBL.Weight ( Weight )
+-- Local imports.
import qualified OptionalConfiguration as OC (
- OptionalConfiguration(..) )
+ OptionalConfiguration(..),
+ merge_maybe,
+ merge_monoid )
import Hosts ( Hosts(..) )
import Lists ( Lists(..) )
data Configuration =
Configuration {
hosts :: Hosts,
- lists :: Lists }
--- threshold :: Weight }
+ lists :: Lists,
+ threshold :: Weight }
deriving (Show)
--
instance Default Configuration where
def = Configuration { hosts = def,
- lists = def }
--- threshold = def }
+ lists = def,
+ threshold = def }
-- | Merge a 'Configuration' with an 'OptionalConfiguration'. This is
merge_optional :: Configuration
-> OC.OptionalConfiguration
-> Configuration
-merge_optional cfg opt_cfg =
- Configuration all_hosts all_lists
+merge_optional cfg opt_cfg = Configuration hs ls t
where
- all_hosts = (hosts cfg) `mappend` (OC.hosts opt_cfg)
- all_lists = (lists cfg) `mappend` (OC.lists opt_cfg)
+ hs = OC.merge_monoid (hosts cfg) (OC.hosts opt_cfg)
+ ls = OC.merge_monoid (lists cfg) (OC.lists opt_cfg)
+ t = OC.merge_maybe (threshold cfg) (OC.threshold opt_cfg)