{-# OPTIONS_GHC -Wall #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TemplateHaskell #-} module Data.Aviation.Casr.Logbook.Types.FlightPoint( FlightPoint(..) , HasFlightPoint(..) , pointatdate , runwayatdate , runway' ) where import Control.Category ( Category((.)) ) import Control.Lens(makeClassy, Traversal', _Just) import Data.Aviation.Casr.Logbook.Types.Time(Time, dayonly) import Data.Eq(Eq) import Data.Maybe(Maybe(Nothing, Just)) import Data.Ord(Ord) import Data.String(String) import Data.Time(Day) import Prelude(Show) data FlightPoint = FlightPoint { FlightPoint -> String _point :: String , FlightPoint -> Maybe String _runway :: Maybe String , FlightPoint -> Time _landingTime :: Time } deriving (FlightPoint -> FlightPoint -> Bool (FlightPoint -> FlightPoint -> Bool) -> (FlightPoint -> FlightPoint -> Bool) -> Eq FlightPoint forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: FlightPoint -> FlightPoint -> Bool == :: FlightPoint -> FlightPoint -> Bool $c/= :: FlightPoint -> FlightPoint -> Bool /= :: FlightPoint -> FlightPoint -> Bool Eq, Eq FlightPoint Eq FlightPoint => (FlightPoint -> FlightPoint -> Ordering) -> (FlightPoint -> FlightPoint -> Bool) -> (FlightPoint -> FlightPoint -> Bool) -> (FlightPoint -> FlightPoint -> Bool) -> (FlightPoint -> FlightPoint -> Bool) -> (FlightPoint -> FlightPoint -> FlightPoint) -> (FlightPoint -> FlightPoint -> FlightPoint) -> Ord FlightPoint FlightPoint -> FlightPoint -> Bool FlightPoint -> FlightPoint -> Ordering FlightPoint -> FlightPoint -> FlightPoint forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: FlightPoint -> FlightPoint -> Ordering compare :: FlightPoint -> FlightPoint -> Ordering $c< :: FlightPoint -> FlightPoint -> Bool < :: FlightPoint -> FlightPoint -> Bool $c<= :: FlightPoint -> FlightPoint -> Bool <= :: FlightPoint -> FlightPoint -> Bool $c> :: FlightPoint -> FlightPoint -> Bool > :: FlightPoint -> FlightPoint -> Bool $c>= :: FlightPoint -> FlightPoint -> Bool >= :: FlightPoint -> FlightPoint -> Bool $cmax :: FlightPoint -> FlightPoint -> FlightPoint max :: FlightPoint -> FlightPoint -> FlightPoint $cmin :: FlightPoint -> FlightPoint -> FlightPoint min :: FlightPoint -> FlightPoint -> FlightPoint Ord, Int -> FlightPoint -> ShowS [FlightPoint] -> ShowS FlightPoint -> String (Int -> FlightPoint -> ShowS) -> (FlightPoint -> String) -> ([FlightPoint] -> ShowS) -> Show FlightPoint forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> FlightPoint -> ShowS showsPrec :: Int -> FlightPoint -> ShowS $cshow :: FlightPoint -> String show :: FlightPoint -> String $cshowList :: [FlightPoint] -> ShowS showList :: [FlightPoint] -> ShowS Show) makeClassy ''FlightPoint runway' :: HasFlightPoint c => Traversal' c String runway' :: forall c. HasFlightPoint c => Traversal' c String runway' = (Maybe String -> f (Maybe String)) -> c -> f c forall c. HasFlightPoint c => Lens' c (Maybe String) Lens' c (Maybe String) runway ((Maybe String -> f (Maybe String)) -> c -> f c) -> ((String -> f String) -> Maybe String -> f (Maybe String)) -> (String -> f String) -> c -> f c forall b c a. (b -> c) -> (a -> b) -> a -> c forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (String -> f String) -> Maybe String -> f (Maybe String) forall a b (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => p a (f b) -> p (Maybe a) (f (Maybe b)) _Just pointatdate :: String -> Day -> FlightPoint pointatdate :: String -> Day -> FlightPoint pointatdate String a Day d = String -> Maybe String -> Time -> FlightPoint FlightPoint String a Maybe String forall a. Maybe a Nothing (Day -> Time dayonly Day d) runwayatdate :: String -> String -> Day -> FlightPoint runwayatdate :: String -> String -> Day -> FlightPoint runwayatdate String a String r Day d = String -> Maybe String -> Time -> FlightPoint FlightPoint String a (String -> Maybe String forall a. a -> Maybe a Just String r) (Day -> Time dayonly Day d)