convert date parsing library from tagged return types to exceptions
Signed-off-by: Jordan Wilberding <jwilberding@gmail.com>
This commit is contained in:
parent
8898f93f61
commit
6d969cd55e
1 changed files with 6 additions and 6 deletions
|
@ -56,12 +56,12 @@ format(Format, {_,_,_}=Now) ->
|
||||||
format(Format, Date) ->
|
format(Format, Date) ->
|
||||||
format(Format, Date, []).
|
format(Format, Date, []).
|
||||||
|
|
||||||
-spec parse(string()) -> datetime() | {error, bad_date}.
|
-spec parse(string()) -> datetime().
|
||||||
%% @doc parses the datetime from a string
|
%% @doc parses the datetime from a string
|
||||||
parse(Date) ->
|
parse(Date) ->
|
||||||
do_parse(Date, calendar:universal_time(),[]).
|
do_parse(Date, calendar:universal_time(),[]).
|
||||||
|
|
||||||
-spec parse(string(),datetime() | now()) -> datetime() | {error, bad_date}.
|
-spec parse(string(),datetime() | now()) -> datetime().
|
||||||
%% @doc parses the datetime from a string
|
%% @doc parses the datetime from a string
|
||||||
parse(Date, {_,_,_}=Now) ->
|
parse(Date, {_,_,_}=Now) ->
|
||||||
do_parse(Date, calendar:now_to_datetime(Now), []);
|
do_parse(Date, calendar:now_to_datetime(Now), []);
|
||||||
|
@ -71,16 +71,16 @@ parse(Date, Now) ->
|
||||||
do_parse(Date, Now, Opts) ->
|
do_parse(Date, Now, Opts) ->
|
||||||
case parse(tokenise(string:to_upper(Date), []), Now, Opts) of
|
case parse(tokenise(string:to_upper(Date), []), Now, Opts) of
|
||||||
{error, bad_date} ->
|
{error, bad_date} ->
|
||||||
{error, bad_date};
|
erlang:throw({?MODULE, {bad_date, Date}});
|
||||||
{D1, T1} = {{Y, M, D}, {H, M1, S}}
|
{D1, T1} = {{Y, M, D}, {H, M1, S}}
|
||||||
when is_number(Y), is_number(M),
|
when is_number(Y), is_number(M),
|
||||||
is_number(D), is_number(H),
|
is_number(D), is_number(H),
|
||||||
is_number(M1), is_number(S) ->
|
is_number(M1), is_number(S) ->
|
||||||
case calendar:valid_date(D1) of
|
case calendar:valid_date(D1) of
|
||||||
true -> {D1, T1};
|
true -> {D1, T1};
|
||||||
false -> {error, bad_date}
|
false -> erlang:throw({?MODULE, {bad_date, Date}})
|
||||||
end;
|
end;
|
||||||
_ -> {error, bad_date}
|
_ -> erlang:throw({?MODULE, {bad_date, Date}})
|
||||||
end.
|
end.
|
||||||
|
|
||||||
-spec nparse(string()) -> now().
|
-spec nparse(string()) -> now().
|
||||||
|
@ -519,7 +519,7 @@ basic_parse_test_() ->
|
||||||
parse("23/april/1963", ?DATE)),
|
parse("23/april/1963", ?DATE)),
|
||||||
?_assertEqual({{1963,4,23}, {17,16,17}},
|
?_assertEqual({{1963,4,23}, {17,16,17}},
|
||||||
parse("23/apr/1963", ?DATE)),
|
parse("23/apr/1963", ?DATE)),
|
||||||
?_assertEqual({error, bad_date},
|
?_assertThrow({?MODULE, {bad_date, "23/ap/195"}},
|
||||||
parse("23/ap/195", ?DATE)),
|
parse("23/ap/195", ?DATE)),
|
||||||
?_assertEqual({{2001,3,10}, {6,45,0}},
|
?_assertEqual({{2001,3,10}, {6,45,0}},
|
||||||
parse("6:45 am", ?DATE)),
|
parse("6:45 am", ?DATE)),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue