module Data.Geo.GPX.Type.Trk(
Trk
, trk
) where
import Data.Geo.GPX.Type.Trkseg
import Data.Geo.GPX.Type.Extensions
import Data.Geo.GPX.Type.Link
import Data.Geo.GPX.Lens.NameL
import Data.Geo.GPX.Lens.CmtL
import Data.Geo.GPX.Lens.DescL
import Data.Geo.GPX.Lens.SrcL
import Data.Geo.GPX.Lens.LinksL
import Data.Geo.GPX.Lens.NumberL
import Data.Geo.GPX.Lens.TypeL
import Data.Geo.GPX.Lens.ExtensionsL
import Data.Geo.GPX.Lens.TrksegsL
import Data.Lens.Common
import Control.Comonad.Trans.Store
import Text.XML.HXT.Arrow.Pickle
data Trk = Trk (Maybe String) (Maybe String) (Maybe String) (Maybe String) [Link] (Maybe Int) (Maybe String) (Maybe Extensions) [Trkseg]
deriving Eq
trk ::
Maybe String
-> Maybe String
-> Maybe String
-> Maybe String
-> [Link]
-> Maybe Int
-> Maybe String
-> Maybe Extensions
-> [Trkseg]
-> Trk
trk a b c d e f =
Trk a b c d e (fmap abs f)
instance NameL Trk where
nameL =
Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\name -> Trk name cmt desc src links number typ extensions trksegs) name
instance CmtL Trk where
cmtL =
Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\cmt -> Trk name cmt desc src links number typ extensions trksegs) cmt
instance DescL Trk where
descL =
Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\desc -> Trk name cmt desc src links number typ extensions trksegs) desc
instance SrcL Trk where
srcL =
Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\src -> Trk name cmt desc src links number typ extensions trksegs) src
instance LinksL Trk where
linksL =
Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\links -> Trk name cmt desc src links number typ extensions trksegs) links
instance NumberL Trk where
numberL =
Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\number -> Trk name cmt desc src links number typ extensions trksegs) number
instance TypeL Trk where
typeL =
Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\typ -> Trk name cmt desc src links number typ extensions trksegs) typ
instance ExtensionsL Trk where
extensionsL =
Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\extensions -> Trk name cmt desc src links number typ extensions trksegs) extensions
instance TrksegsL Trk where
trksegsL =
Lens $ \(Trk name cmt desc src links number typ extensions trksegs) -> store (\trksegs -> Trk name cmt desc src links number typ extensions trksegs) trksegs
instance XmlPickler Trk where
xpickle =
xpWrap (\(a, b, c, d, e, f, g, h, i) -> trk a b c d e f g h i, \(Trk a b c d e f g h i) -> (a, b, c, d, e, f, g, h, i)) (xp9Tuple
(xpOption (xpElem "name" xpText))
(xpOption (xpElem "cmt" xpText))
(xpOption (xpElem "desc" xpText))
(xpOption (xpElem "src" xpText))
(xpList (xpElem "link" xpickle))
(xpOption (xpElem "number" xpPrim))
(xpOption (xpElem "type" xpText))
(xpOption (xpElem "extensions" xpickle))
(xpList (xpElem "trkseg" xpickle)))