Skip to content

Commit 81ebf8e

Browse files
committed
Fix meridiem parsing
1 parent ec945e5 commit 81ebf8e

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/cljs_time/internal/parse.cljs

+5-1
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,16 @@
167167
(fn [s]
168168
(let [[[m n] s] (split-at 2 s)
169169
meridiem (str m n)
170+
err #(ex-info
171+
(str "Invalid meridiem format: " meridiem) {:type :parse-error})
170172
[meridiem s] (cond (#{"am" "pm" "AM" "PM"} meridiem)
171173
[meridiem s]
172174
(#{\a \p} m)
173175
[({\a "am" \p "pm"} m) (cons n s)]
174176
(#{\A \P} m)
175-
[({\A "am" \P "pm"} m) (cons n s)])]
177+
[({\A "am" \P "pm"} m) (cons n s)]
178+
:default
179+
(throw (err)))]
176180
[[:meridiem (keyword meridiem)] (string/join s)]))))
177181

178182
(defn parse-period-name [s period periods short?]

test/cljs_time/format_test.cljs

+7
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@
3131
(try
3232
(format/parse (formatter "dd/MM/yyyy") "32/04/2013")
3333
(catch ExceptionInfo e (:type (ex-data e))))))
34+
35+
(is
36+
(= :parse-error
37+
(try
38+
(format/parse (formatter "hh:mm A") "10:00 T")
39+
(catch ExceptionInfo e (:type (ex-data e))))))
40+
3441
(let [date (format/parse (formatter "dd/MM/yyyy") "12/08/1938")]
3542
(is (= 1938 (.getYear date)))
3643
(is (= 12 (.getDate date)))

0 commit comments

Comments
 (0)