-- | Complex Type: @emailType@ module Data.Geo.GPX.Email( Email , email ) where import Data.Geo.GPX.Lens.IdL import Data.Geo.GPX.Lens.DomainL import Data.Lens.Common import Control.Comonad.Trans.Store import Text.XML.HXT.Arrow.Pickle data Email = Email String String deriving (Eq, Ord) email :: String -- ^ The id. -> String -- ^ The domain. -> Email email = Email instance IdL Email where idL = Lens $ \(Email id domain) -> store (\id -> Email id domain) id instance DomainL Email where domainL = Lens $ \(Email id domain) -> store (\domain -> Email id domain) domain instance XmlPickler Email where xpickle = xpWrap (uncurry email, \(Email id' domain') -> (id', domain')) (xpPair (xpAttr "id" xpText) (xpAttr "domain" xpText))