@@ -9,7 +9,7 @@ import Data.DateTime (Date, DateTime(..), Month(..), canonicalDate)
9import Data.Either (Either(..), fromRight, isLeft)
9import Data.Either (Either(..), fromRight, isLeft)
10import Data.Enum (toEnum)
10import Data.Enum (toEnum)
11import Data.Foldable (intercalate)
11import Data.Foldable (intercalate)
12−import Data.Foreign (renderForeignError)
12+import Data.Foreign (F, renderForeignError)
13import Data.Generic.Rep (class Generic)
13import Data.Generic.Rep (class Generic)
14import Data.Intl.DateTimeFormat (DateTimeFormatOptions(DateTimeFormatOptions), DateTimeFormatOptions', HourMinute(HourMinute), HourMinuteSecond(HourMinuteSecond), LocalesOption, MonthDay(MonthDay), MonthRep(MonthTwoDigit, MonthNumeric, MonthNarrow, MonthShort, MonthLong), NumericRep(Numeric, TwoDigit), ResolvedOptions(..), StringRep(Short, Long), TimeZone(TimeZone), WeekdayYearMonthDay(WeekdayYearMonthDay), WeekdayYearMonthDayHourMinuteSecond(WeekdayYearMonthDayHourMinuteSecond), YearMonth(YearMonth), YearMonthDay(YearMonthDay), createDateTimeFormatter, formatJSDate, resolvedOptions, supportedLocalesOf)
14import Data.Intl.DateTimeFormat (DateTimeFormatOptions(DateTimeFormatOptions), DateTimeFormatOptions', HourMinute(HourMinute), HourMinuteSecond(HourMinuteSecond), LocalesOption, MonthDay(MonthDay), MonthRep(MonthTwoDigit, MonthNumeric, MonthNarrow, MonthShort, MonthLong), NumericRep(Numeric, TwoDigit), ResolvedOptions(..), StringRep(Short, Long), TimeZone(TimeZone), WeekdayYearMonthDay(WeekdayYearMonthDay), WeekdayYearMonthDayHourMinuteSecond(WeekdayYearMonthDayHourMinuteSecond), YearMonth(YearMonth), YearMonthDay(YearMonthDay), createDateTimeFormatter, formatJSDate, resolvedOptions, supportedLocalesOf)
15import Data.Intl.DateTimeFormat.Generic (class FormatComponent, genericFormatComponent)
15import Data.Intl.DateTimeFormat.Generic (class FormatComponent, genericFormatComponent)
@@ -52,6 +52,9 @@ main :: Tests
55+ unsafeFromF :: forall a. F a -> a
56+ unsafeFromF = unsafePartial fromRight <<< runExcept
55 locales :: LocalesOption
58 locales :: LocalesOption
56 locales = inj (SProxy :: SProxy "locale") "en-US"
59 locales = inj (SProxy :: SProxy "locale") "en-US"
@@ -69,7 +72,7 @@ main = do
69 (inj (SProxy :: SProxy "hourMinute") (HourMinute {hour: TwoDigit, minute: TwoDigit}))
72 (inj (SProxy :: SProxy "hourMinute") (HourMinute {hour: TwoDigit, minute: TwoDigit}))
72− fmtHourMinute = unsafePartial $ fromRight $
75+ fmtHourMinute = unsafeFromF $
73 createDateTimeFormatter locales opts
76 createDateTimeFormatter locales opts
75 opts :: DateTimeFormatOptions'
78 opts :: DateTimeFormatOptions'
@@ -83,7 +86,7 @@ main = do
83 (inj (SProxy :: SProxy "hourMinute") (HourMinute {hour: TwoDigit, minute: TwoDigit}))
86 (inj (SProxy :: SProxy "hourMinute") (HourMinute {hour: TwoDigit, minute: TwoDigit}))
86− fmtHourMinuteSecond = unsafePartial $ fromRight $
89+ fmtHourMinuteSecond = unsafeFromF $
87 createDateTimeFormatter locales opts
90 createDateTimeFormatter locales opts
89 opts :: DateTimeFormatOptions'
92 opts :: DateTimeFormatOptions'
@@ -97,7 +100,7 @@ main = do
97 (inj (SProxy :: SProxy "hourMinuteSecond") (HourMinuteSecond {hour: Numeric, minute: Numeric, second: Numeric}))
100 (inj (SProxy :: SProxy "hourMinuteSecond") (HourMinuteSecond {hour: Numeric, minute: Numeric, second: Numeric}))
100− fmtWeekdayYearMonthDayHourMinuteSecond = unsafePartial $ fromRight $
103+ fmtWeekdayYearMonthDayHourMinuteSecond = unsafeFromF $
101 createDateTimeFormatter locales opts
104 createDateTimeFormatter locales opts
103 opts :: DateTimeFormatOptions'
106 opts :: DateTimeFormatOptions'
@@ -123,7 +126,7 @@ main = do
126− fmtWeekdayYearMonthDay = unsafePartial $ fromRight $
129+ fmtWeekdayYearMonthDay = unsafeFromF $
127 createDateTimeFormatter locales opts
130 createDateTimeFormatter locales opts
129 opts :: DateTimeFormatOptions'
132 opts :: DateTimeFormatOptions'
@@ -146,7 +149,7 @@ main = do
149− fmtYearMonthDay = unsafePartial $ fromRight $
152+ fmtYearMonthDay = unsafeFromF $
150 createDateTimeFormatter locales opts
153 createDateTimeFormatter locales opts
152 opts :: DateTimeFormatOptions'
155 opts :: DateTimeFormatOptions'
@@ -168,7 +171,7 @@ main = do
171− fmtYearMonth = unsafePartial $ fromRight $
174+ fmtYearMonth = unsafeFromF $
172 createDateTimeFormatter locales opts
175 createDateTimeFormatter locales opts
174 opts :: DateTimeFormatOptions'
177 opts :: DateTimeFormatOptions'
@@ -189,7 +192,7 @@ main = do
192− fmtMonthDay = unsafePartial $ fromRight $
195+ fmtMonthDay = unsafeFromF $
193 createDateTimeFormatter locales opts
196 createDateTimeFormatter locales opts
195 opts :: DateTimeFormatOptions'
198 opts :: DateTimeFormatOptions'
@@ -210,7 +213,7 @@ main = do
213− fmtEraYear = unsafePartial $ fromRight $
216+ fmtEraYear = unsafeFromF $
214 createDateTimeFormatter locales opts
217 createDateTimeFormatter locales opts
216 opts :: DateTimeFormatOptions EraYear
219 opts :: DateTimeFormatOptions EraYear
@@ -231,7 +234,7 @@ main = do
234− fmtEra = unsafePartial $ fromRight $
237+ fmtEra = unsafeFromF $
235 createDateTimeFormatter locales opts
238 createDateTimeFormatter locales opts
237 opts :: DateTimeFormatOptions Era
240 opts :: DateTimeFormatOptions Era
@@ -277,7 +280,7 @@ main = do
277 Nothing -> unsafeCrashWith "jsDate not parsed"
280 Nothing -> unsafeCrashWith "jsDate not parsed"
278 Just d -> do
281 Just d -> do
280− assert' "fmtError expected to return error" $ isLeft fmtError
283+ assert' "fmtError expected to return error" $ isLeft (runExcept fmtError)
282 let fmtDate1 = formatJSDate fmtWeekdayYearMonthDayHourMinuteSecond d
285 let fmtDate1 = formatJSDate fmtWeekdayYearMonthDayHourMinuteSecond d
283 fmtDate1Expected = "Tue, January 2, 2018, 12:00:00 PM"
286 fmtDate1Expected = "Tue, January 2, 2018, 12:00:00 PM"