4 | import public IotaTime.Duration
5 | import public IotaTime.Instant
6 | import public IotaTime.Interval
7 | import public IotaTime.Offset
8 | import public IotaTime.Period
9 | import public IotaTime.Calendar
10 | import public IotaTime.Calendar.Gregorian
11 | import public IotaTime.Calendar.Iso
12 | import public IotaTime.Calendar.Coptic
13 | import public IotaTime.Calendar.Islamic
14 | import public IotaTime.Calendar.Persian
15 | import public IotaTime.Calendar.Julian
16 | import public IotaTime.Calendar.Hebrew
17 | import public IotaTime.LocalTime
18 | import public IotaTime.CalendarDateTime
19 | import public IotaTime.OffsetDateTime
20 | import public IotaTime.TimeZone.Core
21 | import public IotaTime.TimeZone.Error
22 | import public IotaTime.ZonedDateTime
23 | import public IotaTime.Clock
24 | import public IotaTime.Tzdb.Metadata
25 | import IotaTime.Tzdb.Provider
26 | import public IotaTime.Pattern
27 | import public IotaTime.Pattern.Scalar
28 | import public IotaTime.Pattern.Calendar
29 | import public IotaTime.Pattern.Duration
30 | import public IotaTime.Pattern.Offset
33 | record TimeZoneProviderRep where
34 | constructor MkTimeZoneProviderRep
35 | providerRepresentation : IotaTime.Tzdb.Provider.TimeZoneProviderRep
39 | TimeZoneProvider : Type
40 | TimeZoneProvider = IotaTime.Pure.TimeZoneProviderRep
44 | timeZoneProvider : IO (Either TzdbError TimeZone) ->
45 | (String -> IO (Either TzdbError TimeZone)) ->
46 | IO (Either TzdbError TimeZone) ->
47 | IO (Either TzdbError (List String)) ->
48 | IO (Either TzdbError TzdbMetadata) ->
50 | timeZoneProvider utcAction zoneAction localAction availableAction metadataAction =
51 | MkTimeZoneProviderRep $
IotaTime.Tzdb.Provider.timeZoneProvider
52 | utcAction zoneAction localAction availableAction metadataAction
55 | record TimeZoneCachePolicyRep where
56 | constructor MkTimeZoneCachePolicyRep
57 | cachePolicyRepresentation : IotaTime.Tzdb.Provider.TimeZoneCachePolicyRep
60 | TimeZoneCachePolicy : Type
61 | TimeZoneCachePolicy = IotaTime.Pure.TimeZoneCachePolicyRep
64 | timeZoneCachePolicy : (cacheNamedZones : Bool) ->
65 | (cacheAvailableZones : Bool) ->
66 | (cacheMetadata : Bool) ->
67 | (cacheLocalZone : Bool) ->
69 | timeZoneCachePolicy named available valueMetadata local =
70 | MkTimeZoneCachePolicyRep $
IotaTime.Tzdb.Provider.timeZoneCachePolicy
71 | named available valueMetadata local
74 | defaultTimeZoneCachePolicy : TimeZoneCachePolicy
75 | defaultTimeZoneCachePolicy =
76 | MkTimeZoneCachePolicyRep IotaTime.Tzdb.Provider.defaultTimeZoneCachePolicy
79 | cachedTimeZoneProvider : TimeZoneCachePolicy -> TimeZoneProvider ->
81 | cachedTimeZoneProvider (MkTimeZoneCachePolicyRep policy)
82 | (MkTimeZoneProviderRep provider) =
83 | MkTimeZoneProviderRep <$>
84 | IotaTime.Tzdb.Provider.cachedTimeZoneProvider policy provider
87 | utcWith : TimeZoneProvider -> IO (Either TzdbError TimeZone)
88 | utcWith (MkTimeZoneProviderRep provider) =
89 | IotaTime.Tzdb.Provider.runProviderUtc provider
92 | timeZoneWith : TimeZoneProvider -> String -> IO (Either TzdbError TimeZone)
93 | timeZoneWith (MkTimeZoneProviderRep provider) =
94 | IotaTime.Tzdb.Provider.runProviderTimeZone provider
97 | localZoneWith : TimeZoneProvider -> IO (Either TzdbError TimeZone)
98 | localZoneWith (MkTimeZoneProviderRep provider) =
99 | IotaTime.Tzdb.Provider.runProviderLocalZone provider
102 | availableZonesWith : TimeZoneProvider ->
103 | IO (Either TzdbError (List String))
104 | availableZonesWith (MkTimeZoneProviderRep provider) =
105 | IotaTime.Tzdb.Provider.runProviderAvailableZones provider
108 | metadataWith : TimeZoneProvider -> IO (Either TzdbError TzdbMetadata)
109 | metadataWith (MkTimeZoneProviderRep provider) =
110 | IotaTime.Tzdb.Provider.runProviderMetadata provider