module Data.Geo.Route.Link( Link , mkLink , linkHref , linkText , linkType ) where import Prelude(Show) import Control.Lens(Lens', lens) import Data.Eq(Eq) import Data.Geo.Route.Gpx(Gpx(gpx)) import Data.Ord(Ord) import Data.String(String) import Text.Printf(printf) data Link = Link String -- href String -- text String -- type deriving (Eq, Ord, Show) mkLink :: String -> String -> String -> Link mkLink = Link instance Gpx Link where gpx (Link h x t) = printf "%s%s" h x t linkHref :: Lens' Link String linkHref = lens (\(Link h _ _) -> h) (\(Link _ x t) h -> Link h x t) linkText :: Lens' Link String linkText = lens (\(Link _ x _) -> x) (\(Link h _ t) x -> Link h x t) linkType :: Lens' Link String linkType = lens (\(Link _ _ t) -> t) (\(Link h x _) t -> Link h x t)