module Data.Geo.OSM.Version
(
Version
, version
) where
import Text.XML.HXT.Arrow.Pickle
import Data.Geo.OSM.Lens.MinimumL
import Data.Geo.OSM.Lens.MaximumL
import Data.Lens.Common
import Control.Comonad.Trans.Store
data Version =
Version String String
deriving Eq
version ::
String
-> String
-> Version
version =
Version
instance XmlPickler Version where
xpickle =
xpElem "version" (xpWrap (uncurry version, \(Version min' max') -> (min', max')) (xpPair (xpAttr "minimum" xpText) (xpAttr "maximum" xpText)))
instance Show Version where
show =
showPickled []
instance MinimumL Version where
minimumL =
Lens $ \(Version minimum maximum) -> store (\minimum -> Version minimum maximum) minimum
instance MaximumL Version where
maximumL =
Lens $ \(Version minimum maximum) -> store (\maximum -> Version minimum maximum) maximum