{-# LANGUAGE DataKinds #-}
module Codec.JSON.Encoder.Time
(
year
, quarter
, month
, monthDate
, weekDate
, ordinalDate
, timeOfDay
, localTime
, utcTime
, timeZone
, zonedTime
) where
import Codec.JSON.Encoder.Unsafe
import qualified Builder.Lathe.Time as Builder
import Data.ByteString.Builder
import Data.Time.Calendar
import Data.Time.Calendar.Month
import Data.Time.Calendar.Quarter
import Data.Time.Clock
import Data.Time.LocalTime
year :: Year -> Encoder
year :: Year -> Encoder
year Year
y = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Year -> Builder
Builder.year Year
y Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22
quarter :: Quarter -> Encoder
quarter :: Quarter -> Encoder
quarter Quarter
q = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Quarter -> Builder
Builder.quarter Quarter
q Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22
month :: Month -> Encoder
month :: Month -> Encoder
month Month
m = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Month -> Builder
Builder.month Month
m Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22
monthDate :: Day -> Encoder
monthDate :: Day -> Encoder
monthDate Day
d = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Day -> Builder
Builder.monthDate Day
d Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22
weekDate :: Day -> Encoder
weekDate :: Day -> Encoder
weekDate Day
d = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Day -> Builder
Builder.weekDate Day
d Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22
ordinalDate :: Day -> Encoder
ordinalDate :: Day -> Encoder
ordinalDate Day
d = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Day -> Builder
Builder.ordinalDate Day
d Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22
timeOfDay :: TimeOfDay -> Encoder
timeOfDay :: TimeOfDay -> Encoder
timeOfDay TimeOfDay
t = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> TimeOfDay -> Builder
Builder.timeOfDay TimeOfDay
t Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22
localTime :: LocalTime -> Encoder
localTime :: LocalTime -> Encoder
localTime LocalTime
l = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> LocalTime -> Builder
Builder.localTime LocalTime
l Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22
utcTime :: UTCTime -> Encoder
utcTime :: UTCTime -> Encoder
utcTime UTCTime
u = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> UTCTime -> Builder
Builder.utcTime UTCTime
u Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22
timeZone :: TimeZone -> Encoder
timeZone :: TimeZone -> Encoder
timeZone TimeZone
t = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> TimeZone -> Builder
Builder.timeZone TimeZone
t Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22
zonedTime :: ZonedTime -> Encoder
zonedTime :: ZonedTime -> Encoder
zonedTime ZonedTime
z = Builder -> Encoder
Encoder (Builder -> Encoder) -> Builder -> Encoder
forall a b. (a -> b) -> a -> b
$ Word8 -> Builder
word8 Word8
0x22 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> ZonedTime -> Builder
Builder.zonedTime ZonedTime
z Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Word8 -> Builder
word8 Word8
0x22