Skip to content

Commit 008df60

Browse files
committed
add short- and long-options
1 parent 0939947 commit 008df60

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

src/Data/Formatter/DateTime.purs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ data FormatterCommand
5858
| UnixTimestamp
5959
| DayOfWeek
6060
| DayOfWeekName
61+
| DayOfWeekNameShort
6162
| Hours24
6263
| Hours12
6364
| Meridiem
@@ -90,7 +91,8 @@ printFormatterCommand = case _ of
9091
DayOfMonth"D"
9192
UnixTimestamp"X"
9293
DayOfWeek"E"
93-
DayOfWeekName"A"
94+
DayOfWeekName"AA"
95+
DayOfWeekNameShort"A"
9496
Hours24"HH"
9597
Hours12"hh"
9698
Meridiem"a"
@@ -127,7 +129,8 @@ formatterCommandParser = (PC.try <<< PS.string) `oneOfAs`
127129
, Tuple "DD" DayOfMonthTwoDigits
128130
, Tuple "D" DayOfMonth
129131
, Tuple "E" DayOfWeek
130-
, Tuple "A" DayOfWeekName
132+
, Tuple "AA" DayOfWeekName
133+
, Tuple "A" DayOfWeekNameShort
131134
, Tuple "HH" Hours24
132135
, Tuple "hh" Hours12
133136
, Tuple "a" Meridiem
@@ -171,6 +174,7 @@ formatCommand dt@(DT.DateTime d t) = case _ of
171174
UnixTimestamp → show $ Int.floor $ (_ / 1000.0) $ unwrap $ unInstant $ fromDateTime dt
172175
DayOfWeek → show $ fromEnum $ D.weekday d
173176
DayOfWeekName → show $ D.weekday d
177+
DayOfWeekNameShortStr.take 3 $ show $ D.weekday d
174178
Hours24 → padSingleDigit (fromEnum $ T.hour t)
175179
Hours12 → padSingleDigit $ fix12 $ (fromEnum $ T.hour t) `mod` 12
176180
Meridiemif (fromEnum $ T.hour t) >= 12 then "PM" else "AM"
@@ -362,6 +366,8 @@ unformatCommandParser = case _ of
362366
DayOfWeek → void $ parseInt 1 (validateRange 1 7) "Incorrect day of week"
363367
DayOfWeekName → _{day = _} `modifyWithParser`
364368
(fromEnum <$> parseDayOfWeekName)
369+
DayOfWeekNameShort → _{day = _} `modifyWithParser`
370+
(fromEnum <$> parseDayOfWeekNameShort)
365371
Hours24 → _{hour = _} `modifyWithParser`
366372
(parseInt 2 (validateRange 0 24 <> exactLength) "Incorrect 24 hour")
367373
Hours12 → _{hour = _} `modifyWithParser`
@@ -423,6 +429,17 @@ parseDayOfWeekName = (PC.try <<< PS.string) `oneOfAs`
423429
, Tuple "Sunday" D.Sunday
424430
]
425431

432+
parseDayOfWeekNameShort m. Monad m P.ParserT String m D.Weekday
433+
parseDayOfWeekNameShort = (PC.try <<< PS.string) `oneOfAs`
434+
[ Tuple "Mon" D.Monday
435+
, Tuple "Tue" D.Tuesday
436+
, Tuple "Wed" D.Wednesday
437+
, Tuple "Thu" D.Thursday
438+
, Tuple "Fri" D.Friday
439+
, Tuple "Sat" D.Saturday
440+
, Tuple "Sun" D.Sunday
441+
]
442+
426443
parseMonth m. Monad m P.ParserT String m D.Month
427444
parseMonth = (PC.try <<< PS.string) `oneOfAs`
428445
[ Tuple "January" D.January

test/src/DateTime.purs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ datetimeTest = describe "Data.Formatter.DateTime" do
2222
, { format: "YYYY-DD-MM", dateStr: "2017-12-04" , date: makeDateTime 2017 4 12 11 3 4 234}
2323
, { format: "YYYY-MMM", dateStr: "2017-Apr" , date: makeDateTime 2017 4 12 11 3 4 234}
2424
, { format: "MMM D", dateStr: "Apr 1" , date: makeDateTime 2017 4 1 0 0 0 0}
25-
, { format: "A, MMM D", dateStr: "Saturday, Apr 1" , date: makeDateTime 2017 4 1 0 0 0 0}
25+
, { format: "AA, MMM D", dateStr: "Saturday, Apr 1" , date: makeDateTime 2017 4 1 0 0 0 0}
26+
, { format: "A, MMM D", dateStr: "Sat, Apr 1" , date: makeDateTime 2017 4 1 0 0 0 0}
2627
, { format: "hh:mm:ss:SSS a", dateStr: "11:03:04:234 AM" , date: makeDateTime 2017 4 12 11 3 4 234}
2728
, { format: "YY", dateStr: "17" , date: makeDateTime 2017 4 12 11 3 4 234}
2829
, { format: "YY", dateStr: "17" , date: makeDateTime 20017 4 12 0 0 0 0} -- Format 20017 with YY

0 commit comments

Comments
 (0)