{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module LawfulConversions.Relations.DayAndStrictTextBuilder where

#if MIN_VERSION_text(2,1,2)

import qualified Data.Text.Encoding
import Data.Time
import LawfulConversions.Classes
import LawfulConversions.Prelude
import LawfulConversions.Relations.StrictTextBuilderAndString ()
import LawfulConversions.Relations.StringAndText ()
import LawfulConversions.Relations.DayAndString ()

-- | Implements ISO-8601.
instance IsSome Data.Text.Encoding.StrictTextBuilder Day where
  to = from . to @String
  maybeFrom = maybeFrom @String . to

#elif MIN_VERSION_text(2,0,2)

import qualified Data.Text.Encoding
import Data.Time
import LawfulConversions.Classes
import LawfulConversions.Prelude
import LawfulConversions.Relations.StrictTextBuilderAndString ()
import LawfulConversions.Relations.StringAndText ()
import LawfulConversions.Relations.DayAndString ()

-- | Implements ISO-8601.
instance IsSome Data.Text.Encoding.StrictBuilder Day where
  to :: Day -> StrictBuilder
to = String -> StrictBuilder
forall a b. IsMany a b => a -> b
from (String -> StrictBuilder)
-> (Day -> String) -> Day -> StrictBuilder
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
. forall a b. IsSome a b => b -> a
to @String
  maybeFrom :: StrictBuilder -> Maybe Day
maybeFrom = forall a b. IsSome a b => a -> Maybe b
maybeFrom @String (String -> Maybe Day)
-> (StrictBuilder -> String) -> StrictBuilder -> Maybe Day
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
. StrictBuilder -> String
forall a b. IsSome a b => b -> a
to

#endif