route-planning-0.0.1: src/Data/Geo/Route/Name.hs
module Data.Geo.Route.Name(
Name
, HasName(..)
, HasNames(..)
, nameIso
, (<.>)
) where
import Prelude(Show)
import Data.Eq(Eq)
import Data.Function(id)
import Data.Ord(Ord)
import Data.List((++))
import Data.String(String, IsString(..))
import Control.Lens(Lens', Traversal', Iso', iso, set)
import Data.Geo.Route.Gpx(Gpx(gpx))
newtype Name =
Name
String
deriving (Eq, Ord, Show)
nameIso ::
Iso' String Name
nameIso =
iso Name (\(Name s) -> s)
class HasName t where
name ::
Lens' t Name
instance HasName Name where
name =
id
class HasNames t where
names ::
Traversal' t Name
instance HasNames Name where
names =
id
instance IsString Name where
fromString =
Name
instance Gpx Name where
gpx (Name n) =
"<name>" ++ n ++ "</name>"
(<.>) ::
HasNames t =>
Name
-> t
-> t
(<.>) =
set names
infixr 5 <.>