module Configuration (
Cfg(..),
default_config,
- merge_optional
-)
+ merge_optional )
where
-import qualified OptionalConfiguration as OC
+import qualified OptionalConfiguration as OC ( OptionalCfg(..) )
+import Usernames ( Usernames(..) )
data Cfg =
Cfg { consumer_key :: String,
from_address :: Maybe String,
to_address :: Maybe String,
verbose :: Bool,
- usernames :: [String] }
+ usernames :: Usernames }
deriving (Show)
from_address = Nothing,
to_address = Nothing,
verbose = False,
- usernames = [] }
+ usernames = Usernames [] }
merge_optional :: Cfg -> OC.OptionalCfg -> Cfg
merge_optional cfg opt_cfg =
(merge' (from_address cfg) (OC.from_address opt_cfg))
(merge' (to_address cfg) (OC.to_address opt_cfg))
(merge (verbose cfg) (OC.verbose opt_cfg))
- ((usernames cfg) ++ (OC.usernames opt_cfg))
+ all_usernames
where
merge :: a -> Maybe a -> a
merge x Nothing = x
merge' (Just x) Nothing = Just x
merge' Nothing (Just x) = Just x
merge' (Just _) (Just y) = Just y
+
+ -- If there are any optional usernames, use only those.
+ all_usernames = if (null (get_usernames (OC.usernames opt_cfg)))
+ then (usernames cfg)
+ else (OC.usernames opt_cfg)