Detect whether a date is meant as range

- Add DatetimeParser::parse_range: If a date contains no time, it is assumed to be a fixed range, else an open range starting at given datetime
- Add tests for summary with named dates 'yesterday' and 'today'
- Remove closing of filter in CmdSummary.cpp
- Closes #333

Signed-off-by: Thomas Lauf <thomas.lauf@tngtech.com>
This commit is contained in:
Thomas Lauf 2020-06-05 13:35:19 +02:00
parent 2906f36830
commit 63f230013a
8 changed files with 3757 additions and 7 deletions

View file

@ -36,6 +36,7 @@
#include <set>
#include <Duration.h>
#include <timew.h>
#include "DatetimeParser.h"
////////////////////////////////////////////////////////////////////////////////
A2::A2 (const std::string& raw, Lexer::Type lextype)
@ -724,7 +725,9 @@ Interval CLI::getFilter (const Range& default_range) const
else if (args.size () == 1 &&
args[0] == "<date>")
{
filter.setRange ({Datetime (start), 0});
DatetimeParser dtp;
Range range = dtp.parse_range(start);
filter.setRange (range);
}
// from <date>
@ -734,7 +737,6 @@ Interval CLI::getFilter (const Range& default_range) const
{
filter.setRange ({Datetime (start), 0});
}
// <date> to/- <date>
else if (args.size () == 3 &&
args[0] == "<date>" &&