Fix relative parser

This commit is contained in:
Jesse Gumm 2016-03-05 16:26:58 -06:00
parent 41b313d425
commit 1ea2cadb1a

View file

@ -655,8 +655,8 @@ range_years(Interval, Start, Finish) ->
parse_relative({relative, Date, Relation}) when is_atom(Relation) -> parse_relative({relative, Date, Relation}) when is_atom(Relation) ->
parse_relative({relative, Date, atom_to_list(Relation)}); parse_relative({relative, Date, atom_to_list(Relation)});
parse_relative({relative, Date, Relation}) -> parse_relative({relative, Date, Relation}) when is_list(Relation); is_binary(Relation) ->
{OpStr, NumStr, UnitStr} = parse_actual_relation(Relation), {OpStr, NumStr, UnitStr} = parse_actual_relation(Relation),
{Num, Unit} = normalize_relative_matches(OpStr, NumStr, UnitStr), {Num, Unit} = normalize_relative_matches(OpStr, NumStr, UnitStr),
add_unit(Unit, Num, Date); add_unit(Unit, Num, Date);
parse_relative(now) -> parse_relative(now) ->
@ -665,8 +665,10 @@ parse_relative("now") ->
unixtime(); unixtime();
parse_relative(<<"now">>) -> parse_relative(<<"now">>) ->
unixtime(); unixtime();
parse_relative(Relation) -> parse_relative(Relation) when is_list(Relation); is_binary(Relation) ->
parse_relative({relative, unixtime(), Relation}). parse_relative({relative, unixtime(), Relation});
parse_relative(_) ->
undefined.
%% I would do this function recursively, but the return order of arguments %% I would do this function recursively, but the return order of arguments
@ -873,7 +875,8 @@ try_parsers(RawDate,[{ParserKey,Parser}|Parsers]) ->
throw({invalid_parser_return_value,[{parser_key,ParserKey},{return,Other}]}) throw({invalid_parser_return_value,[{parser_key,ParserKey},{return,Other}]})
catch catch
Error:Reason -> Error:Reason ->
throw({error_in_parser,[{error,{Error,Reason}},{parser_key,ParserKey}]}) Stacktrace = erlang:get_stacktrace(),
throw({error_in_parser,[{error,{Error,Reason}},{parser_key,ParserKey}, {stacktrace, Stacktrace}]})
end. end.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%