{-# OPTIONS_GHC -fno-warn-orphans #-}

module Data.Validity.Time.Calendar where

import Data.Time.Calendar
import Data.Validity

-- | Valid according to the 'Integer' it contains.
instance Validity Day where
  validate :: Day -> Validation
validate (ModifiedJulianDay Integer
i) =
    [Validation] -> Validation
forall a. Monoid a => [a] -> a
mconcat
      [ String -> Integer -> Validation
forall a. Validity a => String -> a -> Validation
delve String
"toModifiedJulianDay" Integer
i
      ]

instance Validity CalendarDiffDays where
  validate :: CalendarDiffDays -> Validation
validate (CalendarDiffDays Integer
ms Integer
ds) =
    [Validation] -> Validation
forall a. Monoid a => [a] -> a
mconcat
      [ String -> Integer -> Validation
forall a. Validity a => String -> a -> Validation
delve String
"cdMonths" Integer
ms,
        String -> Integer -> Validation
forall a. Validity a => String -> a -> Validation
delve String
"cdDays" Integer
ds
      ]

instance Validity DayOfWeek where
  validate :: DayOfWeek -> Validation
validate = DayOfWeek -> Validation
forall a. a -> Validation
trivialValidation