module Data.Geo.GPX.PersonType(
PersonType,
personType
) where
import Data.Geo.GPX.EmailType
import Data.Geo.GPX.LinkType
import Data.Geo.GPX.Accessor.Name
import Data.Geo.GPX.Accessor.Email
import Data.Geo.GPX.Accessor.Link
import Text.XML.HXT.Arrow
data PersonType = PersonType (Maybe String) (Maybe EmailType) (Maybe LinkType)
deriving (Eq, Show)
personType :: Maybe String
-> Maybe EmailType
-> Maybe LinkType
-> PersonType
personType = PersonType
instance XmlPickler PersonType where
xpickle = xpWrap (\(name', email', link') -> personType name' email' link', \(PersonType name' email' link') -> (name', email', link')) (xpTriple
(xpOption (xpElem "name" xpText))
(xpOption (xpElem "email" xpickle))
(xpOption (xpElem "link" xpickle)))
instance Name PersonType where
name (PersonType x _ _) = x
instance Email PersonType where
email (PersonType _ x _) = x
instance Link PersonType where
link (PersonType _ _ x) = x