{-# LANGUAGE DeriveDataTypeable #-} -- | A newtype around a list of Strings which represent the feed -- hosts. This is all to avoid an orphan instance of Configured for -- [String] if we had defined one in e.g. OptionalConfiguration. -- module FeedHosts where -- DC is needed only for the DCT.Configured instance of String. import qualified Data.Configurator as DC() import qualified Data.Configurator.Types as DCT import Data.Data (Data) import System.Console.CmdArgs.Default (Default(..)) import Data.Typeable (Typeable) newtype FeedHosts = FeedHosts { get_feed_hosts :: [String] } deriving (Data, Show, Typeable) instance Default FeedHosts where def = FeedHosts ["feed1.sportsnetwork.com", "feed2.sportsnetwork.com", "feed3.sportsnetwork.com"] instance DCT.Configured FeedHosts where convert (DCT.List xs) = fmap FeedHosts (mapM convert_string xs) where convert_string :: DCT.Value -> Maybe String convert_string = DCT.convert convert _ = Nothing