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
-> String
-> 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))