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

module Data.Validity.Time.Format where

import Data.Time.Format
import Data.Validity
import Data.Validity.Time.LocalTime ()

-- | Valid according to the contained values
instance Validity TimeLocale where
  validate :: TimeLocale -> Validation
validate TimeLocale {String
[(String, String)]
[TimeZone]
(String, String)
wDays :: TimeLocale -> [(String, String)]
months :: TimeLocale -> [(String, String)]
amPm :: TimeLocale -> (String, String)
dateTimeFmt :: TimeLocale -> String
dateFmt :: TimeLocale -> String
timeFmt :: TimeLocale -> String
time12Fmt :: TimeLocale -> String
knownTimeZones :: TimeLocale -> [TimeZone]
knownTimeZones :: [TimeZone]
time12Fmt :: String
timeFmt :: String
dateFmt :: String
dateTimeFmt :: String
amPm :: (String, String)
months :: [(String, String)]
wDays :: [(String, String)]
..} =
    [Validation] -> Validation
forall a. Monoid a => [a] -> a
mconcat
      [ [(String, String)] -> String -> Validation
forall a. Validity a => a -> String -> Validation
annotate [(String, String)]
wDays String
"wDays",
        [(String, String)] -> String -> Validation
forall a. Validity a => a -> String -> Validation
annotate [(String, String)]
months String
"months",
        (String, String) -> String -> Validation
forall a. Validity a => a -> String -> Validation
annotate (String, String)
amPm String
"amPm",
        String -> String -> Validation
forall a. Validity a => a -> String -> Validation
annotate String
dateTimeFmt String
"dateTimeFmt",
        String -> String -> Validation
forall a. Validity a => a -> String -> Validation
annotate String
dateFmt String
"dateFmt",
        String -> String -> Validation
forall a. Validity a => a -> String -> Validation
annotate String
timeFmt String
"timeFmt",
        String -> String -> Validation
forall a. Validity a => a -> String -> Validation
annotate String
time12Fmt String
"time12Fmt",
        [TimeZone] -> String -> Validation
forall a. Validity a => a -> String -> Validation
annotate [TimeZone]
knownTimeZones String
"knownTimeZones"
      ]