-- | The @changeset@ element of a OSM file.
module Data.Geo.OSM.ChangesetE(
                                ChangesetE,
                                changesetE
                              ) where

import Text.XML.HXT.Arrow
import Text.XML.HXT.Extras
import Data.Geo.OSM.Tag
import Data.Geo.OSM.Accessor.Tags

-- | The @changeset@ element of a OSM file.
newtype ChangesetE = ChangesetE [Tag]
  deriving Eq

-- | Constructs a @changeset@ with tags.
changesetE :: [Tag] -- ^ The list of tags (@tag@ elements).
              -> ChangesetE
changesetE = ChangesetE

instance XmlPickler ChangesetE where
  xpickle = xpElem "changeset" (xpWrap (changesetE, \(ChangesetE r) -> r) (xpList xpickle))

instance Show ChangesetE where
  show = showPickled []

instance Tags ChangesetE where
  tags (ChangesetE x) = x
  setTags a (ChangesetE _) = changesetE a