lib: Parser now accepts .. as a synonym for to in date ranges.
This commit is contained in:
parent
935abd1842
commit
be25fe360e
@ -912,7 +912,7 @@ lastthisnextthing = do
|
|||||||
-- resolving any relative start/end dates (only; it is not needed for
|
-- resolving any relative start/end dates (only; it is not needed for
|
||||||
-- parsing the reporting interval).
|
-- parsing the reporting interval).
|
||||||
--
|
--
|
||||||
-- >>> let p = parsePeriodExpr (parsedate "2008/11/26")
|
-- >>> let p = parsePeriodExpr (parsedate "2008-11-26")
|
||||||
-- >>> p "from Aug to Oct"
|
-- >>> p "from Aug to Oct"
|
||||||
-- Right (NoInterval,DateSpan 2008-08-01..2008-09-30)
|
-- Right (NoInterval,DateSpan 2008-08-01..2008-09-30)
|
||||||
-- >>> p "aug to oct"
|
-- >>> p "aug to oct"
|
||||||
@ -927,15 +927,17 @@ lastthisnextthing = do
|
|||||||
-- Right (DayOfMonth 2,DateSpan ..)
|
-- Right (DayOfMonth 2,DateSpan ..)
|
||||||
-- >>> p "every 2nd day"
|
-- >>> p "every 2nd day"
|
||||||
-- Right (DayOfMonth 2,DateSpan ..)
|
-- Right (DayOfMonth 2,DateSpan ..)
|
||||||
|
-- >>> p "every 2nd day 2009.."
|
||||||
|
-- Right (DayOfMonth 2,DateSpan 2009-01-01..)
|
||||||
-- >>> p "every 2nd day 2009-"
|
-- >>> p "every 2nd day 2009-"
|
||||||
-- Right (DayOfMonth 2,DateSpan 2009-01-01..)
|
-- Right (DayOfMonth 2,DateSpan 2009-01-01..)
|
||||||
-- >>> p "every 29th Nov"
|
-- >>> p "every 29th Nov"
|
||||||
-- Right (DayOfYear 11 29,DateSpan ..)
|
-- Right (DayOfYear 11 29,DateSpan ..)
|
||||||
-- >>> p "every 29th nov -2009"
|
-- >>> p "every 29th nov ..2009"
|
||||||
-- Right (DayOfYear 11 29,DateSpan ..2008-12-31)
|
-- Right (DayOfYear 11 29,DateSpan ..2008-12-31)
|
||||||
-- >>> p "every nov 29th"
|
-- >>> p "every nov 29th"
|
||||||
-- Right (DayOfYear 11 29,DateSpan ..)
|
-- Right (DayOfYear 11 29,DateSpan ..)
|
||||||
-- >>> p "every Nov 29th 2009-"
|
-- >>> p "every Nov 29th 2009.."
|
||||||
-- Right (DayOfYear 11 29,DateSpan 2009-01-01..)
|
-- Right (DayOfYear 11 29,DateSpan 2009-01-01..)
|
||||||
-- >>> p "every 11/29 from 2009"
|
-- >>> p "every 11/29 from 2009"
|
||||||
-- Right (DayOfYear 11 29,DateSpan 2009-01-01..)
|
-- Right (DayOfYear 11 29,DateSpan 2009-01-01..)
|
||||||
@ -951,9 +953,9 @@ lastthisnextthing = do
|
|||||||
-- Right (DayOfMonth 2,DateSpan ..)
|
-- Right (DayOfMonth 2,DateSpan ..)
|
||||||
-- >>> p "every 2nd day"
|
-- >>> p "every 2nd day"
|
||||||
-- Right (DayOfMonth 2,DateSpan ..)
|
-- Right (DayOfMonth 2,DateSpan ..)
|
||||||
-- >>> p "every 2nd day 2009-"
|
-- >>> p "every 2nd day 2009.."
|
||||||
-- Right (DayOfMonth 2,DateSpan 2009-01-01..)
|
-- Right (DayOfMonth 2,DateSpan 2009-01-01..)
|
||||||
-- >>> p "every 2nd day of month 2009-"
|
-- >>> p "every 2nd day of month 2009.."
|
||||||
-- Right (DayOfMonth 2,DateSpan 2009-01-01..)
|
-- Right (DayOfMonth 2,DateSpan 2009-01-01..)
|
||||||
periodexprp :: Day -> TextParser m (Interval, DateSpan)
|
periodexprp :: Day -> TextParser m (Interval, DateSpan)
|
||||||
periodexprp rdate = do
|
periodexprp rdate = do
|
||||||
@ -1072,7 +1074,7 @@ doubledatespanp rdate = do
|
|||||||
optional (string' "from" >> skipMany spacenonewline)
|
optional (string' "from" >> skipMany spacenonewline)
|
||||||
b <- smartdate
|
b <- smartdate
|
||||||
skipMany spacenonewline
|
skipMany spacenonewline
|
||||||
optional (choice [string' "to", string' "-"] >> skipMany spacenonewline)
|
optional (choice [string' "to", string "..", string' "-"] >> skipMany spacenonewline)
|
||||||
DateSpan (Just $ fixSmartDate rdate b) . Just . fixSmartDate rdate <$> smartdate
|
DateSpan (Just $ fixSmartDate rdate b) . Just . fixSmartDate rdate <$> smartdate
|
||||||
|
|
||||||
fromdatespanp :: Day -> TextParser m DateSpan
|
fromdatespanp :: Day -> TextParser m DateSpan
|
||||||
@ -1084,14 +1086,14 @@ fromdatespanp rdate = do
|
|||||||
,
|
,
|
||||||
do
|
do
|
||||||
d <- smartdate
|
d <- smartdate
|
||||||
string' "-"
|
choice [string "..", string' "-"]
|
||||||
return d
|
return d
|
||||||
]
|
]
|
||||||
return $ DateSpan (Just $ fixSmartDate rdate b) Nothing
|
return $ DateSpan (Just $ fixSmartDate rdate b) Nothing
|
||||||
|
|
||||||
todatespanp :: Day -> TextParser m DateSpan
|
todatespanp :: Day -> TextParser m DateSpan
|
||||||
todatespanp rdate = do
|
todatespanp rdate = do
|
||||||
choice [string' "to", string' "until", string' "-"] >> skipMany spacenonewline
|
choice [string' "to", string' "until", string "..", string' "-"] >> skipMany spacenonewline
|
||||||
DateSpan Nothing . Just . fixSmartDate rdate <$> smartdate
|
DateSpan Nothing . Just . fixSmartDate rdate <$> smartdate
|
||||||
|
|
||||||
justdatespanp :: Day -> TextParser m DateSpan
|
justdatespanp :: Day -> TextParser m DateSpan
|
||||||
|
|||||||
@ -918,16 +918,16 @@ Some notes:
|
|||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
| | |
|
| | |
|
||||||
|-------------------|---------------------------------------------------------------------------------------------|
|
|--------------------|---------------------------------------------------------------------------------------------|
|
||||||
| `-b 2016/3/17` | begin on St. Patrick’s day 2016 |
|
| `-b 2016/3/17` | begin on St. Patrick’s day 2016 |
|
||||||
| `-e 12/1` | end at the start of december 1st of the current year (11/30 will be the last date included) |
|
| `-e 12/1` | end at the start of december 1st of the current year (11/30 will be the last date included) |
|
||||||
| `-b thismonth` | all transactions on or after the 1st of the current month |
|
| `-b thismonth` | all transactions on or after the 1st of the current month |
|
||||||
| `-p thismonth` | all transactions in the current month |
|
| `-p thismonth` | all transactions in the current month |
|
||||||
| `date:2016/3/17-` | the above written as queries instead |
|
| `date:2016/3/17..` | the above written as queries instead (`..` can also be replaced with `-`) |
|
||||||
| `date:-12/1` | |
|
| `date:..12/1` | |
|
||||||
| `date:thismonth-` | |
|
| `date:thismonth..` | |
|
||||||
| `date:thismonth` | |
|
| `date:thismonth` | |
|
||||||
|
|
||||||
## Report intervals
|
## Report intervals
|
||||||
|
|
||||||
@ -951,14 +951,14 @@ hledger always treats start dates as inclusive and end dates as exclusive:
|
|||||||
`-p "from 2009/1/1 to 2009/4/1"`
|
`-p "from 2009/1/1 to 2009/4/1"`
|
||||||
|
|
||||||
Keywords like "from" and "to" are optional, and so are the spaces, as long
|
Keywords like "from" and "to" are optional, and so are the spaces, as long
|
||||||
as you don't run two dates together. "to" can also be written as "-".
|
as you don't run two dates together. "to" can also be written as ".." or "-".
|
||||||
These are equivalent to the above:
|
These are equivalent to the above:
|
||||||
|
|
||||||
| |
|
| |
|
||||||
|--------------------------|
|
|---------------------------|
|
||||||
| `-p "2009/1/1 2009/4/1"` |
|
| `-p "2009/1/1 2009/4/1"` |
|
||||||
| `-p2009/1/1to2009/4/1` |
|
| `-p2009/1/1to2009/4/1` |
|
||||||
| `-p2009/1/1-2009/4/1` |
|
| `-p2009/1/1..2009/4/1` |
|
||||||
|
|
||||||
Dates are [smart dates](#smart-dates), so if the current year is 2009, the
|
Dates are [smart dates](#smart-dates), so if the current year is 2009, the
|
||||||
above can also be written as:
|
above can also be written as:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user