{-# LANGUAGE CPP #-}
module Data.Time.Calendar.OrdinalDate.Compat (
    Day, Year, DayOfYear, WeekOfYear,
    toOrdinalDate,
    fromOrdinalDate,
    pattern YearDay,
    fromOrdinalDateValid,
    showOrdinalDate,
    isLeapYear,
    mondayStartWeek,
    sundayStartWeek,
    fromMondayStartWeek,
    fromMondayStartWeekValid,
    fromSundayStartWeek,
    fromSundayStartWeekValid,
) where

import Data.Time.Orphans ()

import Data.Time.Calendar.OrdinalDate hiding (fromSundayStartWeekValid)
import Data.Time.Calendar.OrdinalDate (fromSundayStartWeekValid)

#if !MIN_VERSION_time(1,11,0)
import Data.Time.Calendar
import Data.Time.Calendar.Types
#endif

#if !MIN_VERSION_time(1,11,0)

-- | Bidirectional abstract constructor for ISO 8601 Ordinal Date format.
-- Invalid day numbers will be clipped to the correct range (1 to 365 or 366).
pattern YearDay :: Year -> DayOfYear -> Day
pattern YearDay y d <- (toOrdinalDate -> (y,d)) where
    YearDay y d = fromOrdinalDate y d

{-# COMPLETE YearDay #-}

#endif