module Taskell.Data.Date.Types ( Deadline(..) , Due(..) ) where import ClassyPrelude data Due = DueTime UTCTime | DueDate Day deriving (Int -> Due -> ShowS [Due] -> ShowS Due -> String (Int -> Due -> ShowS) -> (Due -> String) -> ([Due] -> ShowS) -> Show Due forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Due] -> ShowS $cshowList :: [Due] -> ShowS show :: Due -> String $cshow :: Due -> String showsPrec :: Int -> Due -> ShowS $cshowsPrec :: Int -> Due -> ShowS Show, Due -> Due -> Bool (Due -> Due -> Bool) -> (Due -> Due -> Bool) -> Eq Due forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Due -> Due -> Bool $c/= :: Due -> Due -> Bool == :: Due -> Due -> Bool $c== :: Due -> Due -> Bool Eq) instance Ord Due where compare :: Due -> Due -> Ordering compare (DueTime UTCTime t) (DueDate Day d) = UTCTime t UTCTime -> UTCTime -> Ordering forall a. Ord a => a -> a -> Ordering `compare` Day -> DiffTime -> UTCTime UTCTime Day d DiffTime 0 compare (DueDate Day d) (DueTime UTCTime t) = Day -> DiffTime -> UTCTime UTCTime Day d DiffTime 0 UTCTime -> UTCTime -> Ordering forall a. Ord a => a -> a -> Ordering `compare` UTCTime t compare (DueDate Day d1) (DueDate Day d2) = Day d1 Day -> Day -> Ordering forall a. Ord a => a -> a -> Ordering `compare` Day d2 compare (DueTime UTCTime t1) (DueTime UTCTime t2) = UTCTime t1 UTCTime -> UTCTime -> Ordering forall a. Ord a => a -> a -> Ordering `compare` UTCTime t2 data Deadline = Passed | Today | Tomorrow | ThisWeek | Plenty deriving (Int -> Deadline -> ShowS [Deadline] -> ShowS Deadline -> String (Int -> Deadline -> ShowS) -> (Deadline -> String) -> ([Deadline] -> ShowS) -> Show Deadline forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Deadline] -> ShowS $cshowList :: [Deadline] -> ShowS show :: Deadline -> String $cshow :: Deadline -> String showsPrec :: Int -> Deadline -> ShowS $cshowsPrec :: Int -> Deadline -> ShowS Show, Deadline -> Deadline -> Bool (Deadline -> Deadline -> Bool) -> (Deadline -> Deadline -> Bool) -> Eq Deadline forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Deadline -> Deadline -> Bool $c/= :: Deadline -> Deadline -> Bool == :: Deadline -> Deadline -> Bool $c== :: Deadline -> Deadline -> Bool Eq)