packages feed

GPX 0.1 → 0.2

raw patch · 8 files changed

+92/−9 lines, 8 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.Geo.GPX.Accessor.Latlon: class Latlon a
+ Data.Geo.GPX.Accessor.Latlon: instance (Real a, Real b) => Latlon (a, b)
+ Data.Geo.GPX.Accessor.Latlon: latlon :: (Latlon a) => a -> (Double, Double)
+ Data.Geo.GPX.Gpx: instance Author Gpx (Maybe PersonType)
+ Data.Geo.GPX.Gpx: instance Bounds Gpx
+ Data.Geo.GPX.Gpx: instance Copyright Gpx
+ Data.Geo.GPX.Gpx: instance Creator Gpx
+ Data.Geo.GPX.Gpx: instance Desc Gpx
+ Data.Geo.GPX.Gpx: instance Extensions Gpx
+ Data.Geo.GPX.Gpx: instance Keywords Gpx
+ Data.Geo.GPX.Gpx: instance Links Gpx
+ Data.Geo.GPX.Gpx: instance Metadata Gpx
+ Data.Geo.GPX.Gpx: instance Name Gpx
+ Data.Geo.GPX.Gpx: instance Rtes Gpx
+ Data.Geo.GPX.Gpx: instance Time Gpx
+ Data.Geo.GPX.Gpx: instance Trks Gpx
+ Data.Geo.GPX.Gpx: instance Version Gpx
+ Data.Geo.GPX.Gpx: instance Wpts Gpx
+ Data.Geo.GPX.Gpx: readGpxFile :: FilePath -> IO [Gpx]
+ Data.Geo.GPX.GpxType: instance Author GpxType (Maybe PersonType)
+ Data.Geo.GPX.GpxType: instance Bounds GpxType
+ Data.Geo.GPX.GpxType: instance Copyright GpxType
+ Data.Geo.GPX.GpxType: instance Desc GpxType
+ Data.Geo.GPX.GpxType: instance Keywords GpxType
+ Data.Geo.GPX.GpxType: instance Links GpxType
+ Data.Geo.GPX.GpxType: instance Name GpxType
+ Data.Geo.GPX.GpxType: instance Time GpxType
+ Data.Geo.GPX.LatitudeType: instance Enum LatitudeType
+ Data.Geo.GPX.LatitudeType: instance Floating LatitudeType
+ Data.Geo.GPX.LatitudeType: instance Fractional LatitudeType
+ Data.Geo.GPX.LatitudeType: instance Num LatitudeType
+ Data.Geo.GPX.LatitudeType: instance Ord LatitudeType
+ Data.Geo.GPX.LatitudeType: instance Real LatitudeType
+ Data.Geo.GPX.LatitudeType: instance RealFloat LatitudeType
+ Data.Geo.GPX.LatitudeType: instance RealFrac LatitudeType
+ Data.Geo.GPX.LongitudeType: instance Enum LongitudeType
+ Data.Geo.GPX.LongitudeType: instance Floating LongitudeType
+ Data.Geo.GPX.LongitudeType: instance Fractional LongitudeType
+ Data.Geo.GPX.LongitudeType: instance Num LongitudeType
+ Data.Geo.GPX.LongitudeType: instance Ord LongitudeType
+ Data.Geo.GPX.LongitudeType: instance Real LongitudeType
+ Data.Geo.GPX.LongitudeType: instance RealFloat LongitudeType
+ Data.Geo.GPX.LongitudeType: instance RealFrac LongitudeType
+ Data.Geo.GPX.WptType: instance Latlon WptType

Files

Data/Geo/GPX.hs view
@@ -68,7 +68,9 @@                 module Data.Geo.GPX.Accessor.Number,                 module Data.Geo.GPX.Accessor.Rtepts,                 module Data.Geo.GPX.Accessor.Trkpts,-                module Data.Geo.GPX.Accessor.Trksegs+                module Data.Geo.GPX.Accessor.Trksegs,+                module Data.Geo.GPX.Accessor.Latlon,+                module Control.Arrow               ) where  import Data.Geo.GPX.DgpsStationType@@ -140,3 +142,5 @@ import Data.Geo.GPX.Accessor.Rtepts import Data.Geo.GPX.Accessor.Trkpts import Data.Geo.GPX.Accessor.Trksegs+import Data.Geo.GPX.Accessor.Latlon+import Control.Arrow
+ Data/Geo/GPX/Accessor/Latlon.hs view
@@ -0,0 +1,13 @@+{-# LANGUAGE FlexibleContexts, FlexibleInstances, UndecidableInstances #-}++module Data.Geo.GPX.Accessor.Latlon where++import Data.Geo.GPX.LatitudeType+import Data.Geo.GPX.LongitudeType+import Data.Geo.GPX.Accessor.Value++class Latlon a where+  latlon :: a -> (Double, Double)++instance (Real a, Real b) => Latlon (a, b) where+  latlon (a, b) = (realToFrac a, realToFrac b)
Data/Geo/GPX/Gpx.hs view
@@ -1,18 +1,38 @@-{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, GeneralizedNewtypeDeriving #-}  -- | Element: @gpx@ <http://www.topografix.com/GPX/1/1/#element_gpx> module Data.Geo.GPX.Gpx(                          Gpx,-                         gpx+                         gpx,+                         readGpxFile                        ) where  import Text.XML.HXT.Arrow import Data.Geo.GPX.GpxType+import Data.Geo.GPX.PersonType import Data.Geo.GPX.Accessor.Value+import Data.Geo.GPX.Accessor.Version+import Data.Geo.GPX.Accessor.Creator+import Data.Geo.GPX.Accessor.Metadata+import Data.Geo.GPX.Accessor.Wpts+import Data.Geo.GPX.Accessor.Rtes+import Data.Geo.GPX.Accessor.Trks+import Data.Geo.GPX.Accessor.Extensions+import Data.Geo.GPX.Accessor.Name+import Data.Geo.GPX.Accessor.Desc+import Data.Geo.GPX.Accessor.Author+import Data.Geo.GPX.Accessor.Copyright+import Data.Geo.GPX.Accessor.Links+import Data.Geo.GPX.Accessor.Time+import Data.Geo.GPX.Accessor.Keywords+import Data.Geo.GPX.Accessor.Bounds  newtype Gpx = Gpx GpxType-  deriving Eq+  deriving (Eq, Version, Creator, Metadata, Wpts, Rtes, Trks, Extensions, Name, Desc, Copyright, Links, Time, Keywords, Bounds) +instance Author Gpx (Maybe PersonType) where+  author = author . value+ gpx :: GpxType -- ^ The gpx element contents.        -> Gpx gpx = Gpx@@ -25,3 +45,7 @@  instance Value Gpx GpxType where   value (Gpx x) = x++-- | Reads a GPX file into a list of @Gpx@ values removing whitespace.+readGpxFile :: FilePath -> IO [Gpx]+readGpxFile = runX . xunpickleDocument (xpickle :: PU Gpx) [(a_remove_whitespace, v_1)]
Data/Geo/GPX/GpxType.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances  #-}+ -- | Complex Type: @gpxType@ <http://www.topografix.com/GPX/1/1/#type_gpxType> module Data.Geo.GPX.GpxType(                              GpxType,@@ -9,6 +11,7 @@ import Data.Geo.GPX.RteType import Data.Geo.GPX.TrkType import Data.Geo.GPX.ExtensionsType+import Data.Geo.GPX.PersonType import Data.Geo.GPX.Accessor.Version import Data.Geo.GPX.Accessor.Creator import Data.Geo.GPX.Accessor.Metadata@@ -16,8 +19,17 @@ import Data.Geo.GPX.Accessor.Rtes import Data.Geo.GPX.Accessor.Trks import Data.Geo.GPX.Accessor.Extensions+import Data.Geo.GPX.Accessor.Name+import Data.Geo.GPX.Accessor.Desc+import Data.Geo.GPX.Accessor.Author+import Data.Geo.GPX.Accessor.Copyright+import Data.Geo.GPX.Accessor.Links+import Data.Geo.GPX.Accessor.Time+import Data.Geo.GPX.Accessor.Keywords+import Data.Geo.GPX.Accessor.Bounds import Text.XML.HXT.Arrow import Text.XML.HXT.Extras+import Data.Maybe  data GpxType = GpxType String String (Maybe MetadataType) [WptType] [RteType] [TrkType] (Maybe ExtensionsType)   deriving (Eq, Show)@@ -63,3 +75,27 @@  instance Extensions GpxType where   extensions (GpxType _ _ _ _ _ _ x) = x++instance Name GpxType where+  name = (name =<<) . metadata++instance Desc GpxType where+  desc = (desc =<<) . metadata++instance Author GpxType (Maybe PersonType) where+  author = (author =<<) . metadata++instance Copyright GpxType where+  copyright = (copyright =<<) . metadata++instance Links GpxType where+  links = (links =<<) . maybeToList . metadata++instance Time GpxType where+  time = (time =<<) . metadata++instance Keywords GpxType where+  keywords = (keywords =<<) . metadata++instance Bounds GpxType where+  bounds = (bounds =<<) . metadata
Data/Geo/GPX/LatitudeType.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiParamTypeClasses, GeneralizedNewtypeDeriving #-}  -- | Simple Type: @latitudeType@ <http://www.topografix.com/GPX/1/1/#type_latitudeType> module Data.Geo.GPX.LatitudeType(@@ -11,7 +11,7 @@ import Text.XML.HXT.Arrow  newtype LatitudeType = LatitudeType Double-  deriving Eq+  deriving (Eq, Ord, Enum, Num, Fractional, Floating, Real, RealFrac, RealFloat)  latitudeType :: Double -- ^ The value which will be between -90 and 90 (values out of the range are truncated using a modulus operation).                 -> LatitudeType
Data/Geo/GPX/LongitudeType.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiParamTypeClasses, GeneralizedNewtypeDeriving #-}  -- | Simple Type: @latitudeType@ <http://www.topografix.com/GPX/1/1/#type_latitudeType> module Data.Geo.GPX.LongitudeType(@@ -11,7 +11,7 @@ import Text.XML.HXT.Arrow  newtype LongitudeType = LongitudeType Double-  deriving Eq+  deriving (Eq, Ord, Enum, Num, Fractional, Floating, Real, RealFrac, RealFloat)  longitudeType :: Double -- ^ The value which will be between -180 and 180 (values out of the range are truncated using a modulus operation).                  -> LongitudeType
Data/Geo/GPX/WptType.hs view
@@ -32,6 +32,8 @@ import Data.Geo.GPX.Accessor.Ageofdgpsdata import Data.Geo.GPX.Accessor.Dgpsid import Data.Geo.GPX.Accessor.Extensions+import Data.Geo.GPX.Accessor.Latlon+import Data.Geo.GPX.Accessor.Value import Text.XML.HXT.Arrow import Text.XML.HXT.Extras @@ -169,3 +171,6 @@  instance Extensions WptType where   extensions (WptType _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ x) = x++instance Latlon WptType where+  latlon e = (value (lat e), value (lon e))
GPX.cabal view
@@ -1,5 +1,5 @@ Name:                GPX-Version:             0.1+Version:             0.2 License:             BSD3 License-File:        LICENSE Synopsis:            Parse GPX files@@ -92,3 +92,4 @@                    Data.Geo.GPX.Accessor.Rtepts                    Data.Geo.GPX.Accessor.Trkpts                    Data.Geo.GPX.Accessor.Trksegs+                   Data.Geo.GPX.Accessor.Latlon