{-# OPTIONS_GHC -Wall #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TemplateHaskell #-} module Data.Aviation.Casr.Logbook.Types.Rating( Rating(..) , HasRating(..) , nodayrating , dayrating , ratingAchieved' ) where import Control.Category import Control.Lens(makeClassy, Traversal', _Just) 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 Rating = Rating { Rating -> String _ratingName :: String , Rating -> Maybe Day _ratingAchieved :: Maybe Day } deriving (Rating -> Rating -> Bool (Rating -> Rating -> Bool) -> (Rating -> Rating -> Bool) -> Eq Rating forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Rating -> Rating -> Bool == :: Rating -> Rating -> Bool $c/= :: Rating -> Rating -> Bool /= :: Rating -> Rating -> Bool Eq, Eq Rating Eq Rating => (Rating -> Rating -> Ordering) -> (Rating -> Rating -> Bool) -> (Rating -> Rating -> Bool) -> (Rating -> Rating -> Bool) -> (Rating -> Rating -> Bool) -> (Rating -> Rating -> Rating) -> (Rating -> Rating -> Rating) -> Ord Rating Rating -> Rating -> Bool Rating -> Rating -> Ordering Rating -> Rating -> Rating 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 :: Rating -> Rating -> Ordering compare :: Rating -> Rating -> Ordering $c< :: Rating -> Rating -> Bool < :: Rating -> Rating -> Bool $c<= :: Rating -> Rating -> Bool <= :: Rating -> Rating -> Bool $c> :: Rating -> Rating -> Bool > :: Rating -> Rating -> Bool $c>= :: Rating -> Rating -> Bool >= :: Rating -> Rating -> Bool $cmax :: Rating -> Rating -> Rating max :: Rating -> Rating -> Rating $cmin :: Rating -> Rating -> Rating min :: Rating -> Rating -> Rating Ord, Int -> Rating -> ShowS [Rating] -> ShowS Rating -> String (Int -> Rating -> ShowS) -> (Rating -> String) -> ([Rating] -> ShowS) -> Show Rating forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Rating -> ShowS showsPrec :: Int -> Rating -> ShowS $cshow :: Rating -> String show :: Rating -> String $cshowList :: [Rating] -> ShowS showList :: [Rating] -> ShowS Show) makeClassy ''Rating ratingAchieved' :: HasRating c => Traversal' c Day ratingAchieved' :: forall c. HasRating c => Traversal' c Day ratingAchieved' = (Maybe Day -> f (Maybe Day)) -> c -> f c forall c. HasRating c => Lens' c (Maybe Day) Lens' c (Maybe Day) ratingAchieved ((Maybe Day -> f (Maybe Day)) -> c -> f c) -> ((Day -> f Day) -> Maybe Day -> f (Maybe Day)) -> (Day -> f Day) -> 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 . (Day -> f Day) -> Maybe Day -> f (Maybe Day) forall a b (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => p a (f b) -> p (Maybe a) (f (Maybe b)) _Just nodayrating :: String -> Rating nodayrating :: String -> Rating nodayrating String r = String -> Maybe Day -> Rating Rating String r Maybe Day forall a. Maybe a Nothing dayrating :: String -> Day -> Rating dayrating :: String -> Day -> Rating dayrating String r Day d = String -> Maybe Day -> Rating Rating String r (Day -> Maybe Day forall a. a -> Maybe a Just Day d)