mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-20 02:37:12 +03:00
;lib: update doctests for ISO 8601 date output
[ci skip]
This commit is contained in:
parent
bd333a344d
commit
e0a46a6523
@ -176,21 +176,21 @@ spansSpan spans = DateSpan (maybe Nothing spanStart $ headMay spans) (maybe Noth
|
||||
-- >>> t (Months 1) "2008/01/01" "2008/04/01"
|
||||
-- [DateSpan 2008/01,DateSpan 2008/02,DateSpan 2008/03]
|
||||
-- >>> t (Months 2) "2008/01/01" "2008/04/01"
|
||||
-- [DateSpan 2008/01/01-2008/02/29,DateSpan 2008/03/01-2008/04/30]
|
||||
-- [DateSpan 2008-01-01-2008-02-29,DateSpan 2008-03-01-2008-04-30]
|
||||
-- >>> t (Weeks 1) "2008/01/01" "2008/01/15"
|
||||
-- [DateSpan 2007/12/31w01,DateSpan 2008/01/07w02,DateSpan 2008/01/14w03]
|
||||
-- [DateSpan 2007-12-31w01,DateSpan 2008-01-07w02,DateSpan 2008-01-14w03]
|
||||
-- >>> t (Weeks 2) "2008/01/01" "2008/01/15"
|
||||
-- [DateSpan 2007/12/31-2008/01/13,DateSpan 2008/01/14-2008/01/27]
|
||||
-- [DateSpan 2007-12-31-2008-01-13,DateSpan 2008-01-14-2008-01-27]
|
||||
-- >>> t (DayOfMonth 2) "2008/01/01" "2008/04/01"
|
||||
-- [DateSpan 2007/12/02-2008/01/01,DateSpan 2008/01/02-2008/02/01,DateSpan 2008/02/02-2008/03/01,DateSpan 2008/03/02-2008/04/01]
|
||||
-- [DateSpan 2007-12-02-2008-01-01,DateSpan 2008-01-02-2008-02-01,DateSpan 2008-02-02-2008-03-01,DateSpan 2008-03-02-2008-04-01]
|
||||
-- >>> t (WeekdayOfMonth 2 4) "2011/01/01" "2011/02/15"
|
||||
-- [DateSpan 2010/12/09-2011/01/12,DateSpan 2011/01/13-2011/02/09,DateSpan 2011/02/10-2011/03/09]
|
||||
-- [DateSpan 2010-12-09-2011-01-12,DateSpan 2011-01-13-2011-02-09,DateSpan 2011-02-10-2011-03-09]
|
||||
-- >>> t (DayOfWeek 2) "2011/01/01" "2011/01/15"
|
||||
-- [DateSpan 2010/12/28-2011/01/03,DateSpan 2011/01/04-2011/01/10,DateSpan 2011/01/11-2011/01/17]
|
||||
-- [DateSpan 2010-12-28-2011-01-03,DateSpan 2011-01-04-2011-01-10,DateSpan 2011-01-11-2011-01-17]
|
||||
-- >>> t (DayOfYear 11 29) "2011/10/01" "2011/10/15"
|
||||
-- [DateSpan 2010/11/29-2011/11/28]
|
||||
-- [DateSpan 2010-11-29-2011-11-28]
|
||||
-- >>> t (DayOfYear 11 29) "2011/12/01" "2012/12/15"
|
||||
-- [DateSpan 2011/11/29-2012/11/28,DateSpan 2012/11/29-2013/11/28]
|
||||
-- [DateSpan 2011-11-29-2012-11-28,DateSpan 2012-11-29-2013-11-28]
|
||||
--
|
||||
splitSpan :: Interval -> DateSpan -> [DateSpan]
|
||||
splitSpan _ (DateSpan Nothing Nothing) = [DateSpan Nothing Nothing]
|
||||
@ -258,7 +258,7 @@ spansIntersect (d:ds) = d `spanIntersect` (spansIntersect ds)
|
||||
--
|
||||
-- For non-intersecting spans, gives an empty span beginning on the second's start date:
|
||||
-- >>> mkdatespan "2018-01-01" "2018-01-03" `spanIntersect` mkdatespan "2018-01-03" "2018-01-05"
|
||||
-- DateSpan 2018/01/03-2018/01/02
|
||||
-- DateSpan 2018-01-03-2018-01-02
|
||||
spanIntersect (DateSpan b1 e1) (DateSpan b2 e2) = DateSpan b e
|
||||
where
|
||||
b = latest b1 b2
|
||||
@ -405,72 +405,72 @@ fixSmartDateStrEither' d s = case parsewith smartdateonly (T.toLower s) of
|
||||
-- >>> :set -XOverloadedStrings
|
||||
-- >>> let t = fixSmartDateStr (parsedate "2008/11/26")
|
||||
-- >>> t "0000-01-01"
|
||||
-- "0000/01/01"
|
||||
-- "0000-01-01"
|
||||
-- >>> t "1999-12-02"
|
||||
-- "1999/12/02"
|
||||
-- "1999-12-02"
|
||||
-- >>> t "1999.12.02"
|
||||
-- "1999/12/02"
|
||||
-- "1999-12-02"
|
||||
-- >>> t "1999/3/2"
|
||||
-- "1999/03/02"
|
||||
-- "1999-03-02"
|
||||
-- >>> t "19990302"
|
||||
-- "1999/03/02"
|
||||
-- "1999-03-02"
|
||||
-- >>> t "2008/2"
|
||||
-- "2008/02/01"
|
||||
-- "2008-02-01"
|
||||
-- >>> t "0020/2"
|
||||
-- "0020/02/01"
|
||||
-- "0020-02-01"
|
||||
-- >>> t "1000"
|
||||
-- "1000/01/01"
|
||||
-- "1000-01-01"
|
||||
-- >>> t "4/2"
|
||||
-- "2008/04/02"
|
||||
-- "2008-04-02"
|
||||
-- >>> t "2"
|
||||
-- "2008/11/02"
|
||||
-- "2008-11-02"
|
||||
-- >>> t "January"
|
||||
-- "2008/01/01"
|
||||
-- "2008-01-01"
|
||||
-- >>> t "feb"
|
||||
-- "2008/02/01"
|
||||
-- "2008-02-01"
|
||||
-- >>> t "today"
|
||||
-- "2008/11/26"
|
||||
-- "2008-11-26"
|
||||
-- >>> t "yesterday"
|
||||
-- "2008/11/25"
|
||||
-- "2008-11-25"
|
||||
-- >>> t "tomorrow"
|
||||
-- "2008/11/27"
|
||||
-- "2008-11-27"
|
||||
-- >>> t "this day"
|
||||
-- "2008/11/26"
|
||||
-- "2008-11-26"
|
||||
-- >>> t "last day"
|
||||
-- "2008/11/25"
|
||||
-- "2008-11-25"
|
||||
-- >>> t "next day"
|
||||
-- "2008/11/27"
|
||||
-- "2008-11-27"
|
||||
-- >>> t "this week" -- last monday
|
||||
-- "2008/11/24"
|
||||
-- "2008-11-24"
|
||||
-- >>> t "last week" -- previous monday
|
||||
-- "2008/11/17"
|
||||
-- "2008-11-17"
|
||||
-- >>> t "next week" -- next monday
|
||||
-- "2008/12/01"
|
||||
-- "2008-12-01"
|
||||
-- >>> t "this month"
|
||||
-- "2008/11/01"
|
||||
-- "2008-11-01"
|
||||
-- >>> t "last month"
|
||||
-- "2008/10/01"
|
||||
-- "2008-10-01"
|
||||
-- >>> t "next month"
|
||||
-- "2008/12/01"
|
||||
-- "2008-12-01"
|
||||
-- >>> t "this quarter"
|
||||
-- "2008/10/01"
|
||||
-- "2008-10-01"
|
||||
-- >>> t "last quarter"
|
||||
-- "2008/07/01"
|
||||
-- "2008-07-01"
|
||||
-- >>> t "next quarter"
|
||||
-- "2009/01/01"
|
||||
-- "2009-01-01"
|
||||
-- >>> t "this year"
|
||||
-- "2008/01/01"
|
||||
-- "2008-01-01"
|
||||
-- >>> t "last year"
|
||||
-- "2007/01/01"
|
||||
-- "2007-01-01"
|
||||
-- >>> t "next year"
|
||||
-- "2009/01/01"
|
||||
-- "2009-01-01"
|
||||
--
|
||||
-- t "last wed"
|
||||
-- "2008/11/19"
|
||||
-- "2008-11-19"
|
||||
-- t "next friday"
|
||||
-- "2008/11/28"
|
||||
-- "2008-11-28"
|
||||
-- t "next january"
|
||||
-- "2009/01/01"
|
||||
-- "2009-01-01"
|
||||
--
|
||||
fixSmartDate :: Day -> SmartDate -> Day
|
||||
fixSmartDate refdate = fix
|
||||
@ -910,35 +910,35 @@ lastthisnextthing = do
|
||||
--
|
||||
-- >>> let p = parsePeriodExpr (parsedate "2008/11/26")
|
||||
-- >>> 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"
|
||||
-- Right (NoInterval,DateSpan 2008/08/01-2008/09/30)
|
||||
-- Right (NoInterval,DateSpan 2008-08-01-2008-09-30)
|
||||
-- >>> p "every 3 days in Aug"
|
||||
-- Right (Days 3,DateSpan 2008/08)
|
||||
-- >>> p "daily from aug"
|
||||
-- Right (Days 1,DateSpan 2008/08/01-)
|
||||
-- Right (Days 1,DateSpan 2008-08-01-)
|
||||
-- >>> p "every week to 2009"
|
||||
-- Right (Weeks 1,DateSpan -2008/12/31)
|
||||
-- Right (Weeks 1,DateSpan -2008-12-31)
|
||||
-- >>> p "every 2nd day of month"
|
||||
-- Right (DayOfMonth 2,DateSpan -)
|
||||
-- >>> p "every 2nd day"
|
||||
-- Right (DayOfMonth 2,DateSpan -)
|
||||
-- >>> p "every 2nd day 2009-"
|
||||
-- Right (DayOfMonth 2,DateSpan 2009/01/01-)
|
||||
-- Right (DayOfMonth 2,DateSpan 2009-01-01-)
|
||||
-- >>> p "every 29th Nov"
|
||||
-- Right (DayOfYear 11 29,DateSpan -)
|
||||
-- >>> 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"
|
||||
-- Right (DayOfYear 11 29,DateSpan -)
|
||||
-- >>> 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"
|
||||
-- Right (DayOfYear 11 29,DateSpan 2009/01/01-)
|
||||
-- Right (DayOfYear 11 29,DateSpan 2009-01-01-)
|
||||
-- >>> p "every 2nd Thursday of month to 2009"
|
||||
-- Right (WeekdayOfMonth 2 4,DateSpan -2008/12/31)
|
||||
-- Right (WeekdayOfMonth 2 4,DateSpan -2008-12-31)
|
||||
-- >>> p "every 1st monday of month to 2009"
|
||||
-- Right (WeekdayOfMonth 1 1,DateSpan -2008/12/31)
|
||||
-- Right (WeekdayOfMonth 1 1,DateSpan -2008-12-31)
|
||||
-- >>> p "every tue"
|
||||
-- Right (DayOfWeek 2,DateSpan -)
|
||||
-- >>> p "every 2nd day of week"
|
||||
@ -948,9 +948,9 @@ lastthisnextthing = do
|
||||
-- >>> p "every 2nd day"
|
||||
-- Right (DayOfMonth 2,DateSpan -)
|
||||
-- >>> 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-"
|
||||
-- Right (DayOfMonth 2,DateSpan 2009/01/01-)
|
||||
-- Right (DayOfMonth 2,DateSpan 2009-01-01-)
|
||||
periodexprp :: Day -> TextParser m (Interval, DateSpan)
|
||||
periodexprp rdate = do
|
||||
skipMany spacenonewline
|
||||
@ -1062,7 +1062,7 @@ periodexprdatespanp rdate = choice $ map try [
|
||||
|
||||
-- |
|
||||
-- -- >>> parsewith (doubledatespan (parsedate "2018/01/01") <* eof) "20180101-201804"
|
||||
-- Right DateSpan 2018/01/01-2018/04/01
|
||||
-- Right DateSpan 2018-01-01-2018-04-01
|
||||
doubledatespanp :: Day -> TextParser m DateSpan
|
||||
doubledatespanp rdate = do
|
||||
optional (string' "from" >> skipMany spacenonewline)
|
||||
|
@ -170,8 +170,7 @@ instance FromJSON (DecimalRaw Integer)
|
||||
-- Utilities
|
||||
|
||||
-- | Read a json from a file and decode/parse it as the target type, if we can.
|
||||
-- Example:
|
||||
-- >>> readJsonFile "in.json" :: IO MixedAmount
|
||||
-- Example: >>> readJsonFile "in.json" :: IO MixedAmount
|
||||
readJsonFile :: FromJSON a => FilePath -> IO a
|
||||
readJsonFile f = do
|
||||
bs <- BL.readFile f
|
||||
@ -181,7 +180,6 @@ readJsonFile f = do
|
||||
Success t -> return t
|
||||
|
||||
-- | Write some to-JSON-convertible haskell value to a json file, if we can.
|
||||
-- Example:
|
||||
-- >>> writeJsonFile "out.json" nullmixedamt
|
||||
-- Example: >>> writeJsonFile "out.json" nullmixedamt
|
||||
writeJsonFile :: ToJSON a => FilePath -> a -> IO ()
|
||||
writeJsonFile f v = BL.writeFile f (encode v)
|
||||
|
@ -86,107 +86,107 @@ instance Show PeriodicTransaction where
|
||||
-- - a hidden _generated-transaction: tag which does not appear in the comment.
|
||||
--
|
||||
-- >>> _ptgen "monthly from 2017/1 to 2017/4"
|
||||
-- 2017/01/01
|
||||
-- 2017-01-01
|
||||
-- ; generated-transaction: ~ monthly from 2017/1 to 2017/4
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/02/01
|
||||
-- 2017-02-01
|
||||
-- ; generated-transaction: ~ monthly from 2017/1 to 2017/4
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/03/01
|
||||
-- 2017-03-01
|
||||
-- ; generated-transaction: ~ monthly from 2017/1 to 2017/4
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
--
|
||||
-- >>> _ptgen "monthly from 2017/1 to 2017/5"
|
||||
-- 2017/01/01
|
||||
-- 2017-01-01
|
||||
-- ; generated-transaction: ~ monthly from 2017/1 to 2017/5
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/02/01
|
||||
-- 2017-02-01
|
||||
-- ; generated-transaction: ~ monthly from 2017/1 to 2017/5
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/03/01
|
||||
-- 2017-03-01
|
||||
-- ; generated-transaction: ~ monthly from 2017/1 to 2017/5
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/04/01
|
||||
-- 2017-04-01
|
||||
-- ; generated-transaction: ~ monthly from 2017/1 to 2017/5
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
--
|
||||
-- >>> _ptgen "every 2nd day of month from 2017/02 to 2017/04"
|
||||
-- 2017/01/02
|
||||
-- 2017-01-02
|
||||
-- ; generated-transaction: ~ every 2nd day of month from 2017/02 to 2017/04
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/02/02
|
||||
-- 2017-02-02
|
||||
-- ; generated-transaction: ~ every 2nd day of month from 2017/02 to 2017/04
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/03/02
|
||||
-- 2017-03-02
|
||||
-- ; generated-transaction: ~ every 2nd day of month from 2017/02 to 2017/04
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
--
|
||||
-- >>> _ptgen "every 30th day of month from 2017/1 to 2017/5"
|
||||
-- 2016/12/30
|
||||
-- 2016-12-30
|
||||
-- ; generated-transaction: ~ every 30th day of month from 2017/1 to 2017/5
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/01/30
|
||||
-- 2017-01-30
|
||||
-- ; generated-transaction: ~ every 30th day of month from 2017/1 to 2017/5
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/02/28
|
||||
-- 2017-02-28
|
||||
-- ; generated-transaction: ~ every 30th day of month from 2017/1 to 2017/5
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/03/30
|
||||
-- 2017-03-30
|
||||
-- ; generated-transaction: ~ every 30th day of month from 2017/1 to 2017/5
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/04/30
|
||||
-- 2017-04-30
|
||||
-- ; generated-transaction: ~ every 30th day of month from 2017/1 to 2017/5
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
--
|
||||
-- >>> _ptgen "every 2nd Thursday of month from 2017/1 to 2017/4"
|
||||
-- 2016/12/08
|
||||
-- 2016-12-08
|
||||
-- ; generated-transaction: ~ every 2nd Thursday of month from 2017/1 to 2017/4
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/01/12
|
||||
-- 2017-01-12
|
||||
-- ; generated-transaction: ~ every 2nd Thursday of month from 2017/1 to 2017/4
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/02/09
|
||||
-- 2017-02-09
|
||||
-- ; generated-transaction: ~ every 2nd Thursday of month from 2017/1 to 2017/4
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/03/09
|
||||
-- 2017-03-09
|
||||
-- ; generated-transaction: ~ every 2nd Thursday of month from 2017/1 to 2017/4
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
--
|
||||
-- >>> _ptgen "every nov 29th from 2017 to 2019"
|
||||
-- 2016/11/29
|
||||
-- 2016-11-29
|
||||
-- ; generated-transaction: ~ every nov 29th from 2017 to 2019
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2017/11/29
|
||||
-- 2017-11-29
|
||||
-- ; generated-transaction: ~ every nov 29th from 2017 to 2019
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2018/11/29
|
||||
-- 2018-11-29
|
||||
-- ; generated-transaction: ~ every nov 29th from 2017 to 2019
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
--
|
||||
-- >>> _ptgen "2017/1"
|
||||
-- 2017/01/01
|
||||
-- 2017-01-01
|
||||
-- ; generated-transaction: ~ 2017/1
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
@ -213,21 +213,21 @@ instance Show PeriodicTransaction where
|
||||
-- >>> _ptgenspan "every 3 months from 2019-05" (mkdatespan "2020-01-01" "2020-02-01")
|
||||
--
|
||||
-- >>> _ptgenspan "every 3 months from 2019-05" (mkdatespan "2020-02-01" "2020-03-01")
|
||||
-- 2020/02/01
|
||||
-- 2020-02-01
|
||||
-- ; generated-transaction: ~ every 3 months from 2019-05
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- >>> _ptgenspan "every 3 days from 2018" (mkdatespan "2018-01-01" "2018-01-05")
|
||||
-- 2018/01/01
|
||||
-- 2018-01-01
|
||||
-- ; generated-transaction: ~ every 3 days from 2018
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- 2018/01/04
|
||||
-- 2018-01-04
|
||||
-- ; generated-transaction: ~ every 3 days from 2018
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
-- >>> _ptgenspan "every 3 days from 2018" (mkdatespan "2018-01-02" "2018-01-05")
|
||||
-- 2018/01/04
|
||||
-- 2018-01-04
|
||||
-- ; generated-transaction: ~ every 3 days from 2018
|
||||
-- a $1.00
|
||||
-- <BLANKLINE>
|
||||
|
@ -55,16 +55,16 @@ modifyTransactions tmods = map applymods
|
||||
-- way (ie, 'txnTieKnot' is called).
|
||||
--
|
||||
-- >>> putStr $ showTransaction $ transactionModifierToFunction (TransactionModifier "" ["pong" `post` usd 2]) nulltransaction{tpostings=["ping" `post` usd 1]}
|
||||
-- 0000/01/01
|
||||
-- 0000-01-01
|
||||
-- ping $1.00
|
||||
-- pong $2.00 ; generated-posting: =
|
||||
-- <BLANKLINE>
|
||||
-- >>> putStr $ showTransaction $ transactionModifierToFunction (TransactionModifier "miss" ["pong" `post` usd 2]) nulltransaction{tpostings=["ping" `post` usd 1]}
|
||||
-- 0000/01/01
|
||||
-- 0000-01-01
|
||||
-- ping $1.00
|
||||
-- <BLANKLINE>
|
||||
-- >>> putStr $ showTransaction $ transactionModifierToFunction (TransactionModifier "ping" ["pong" `post` amount{aismultiplier=True, aquantity=3}]) nulltransaction{tpostings=["ping" `post` usd 2]}
|
||||
-- 0000/01/01
|
||||
-- 0000-01-01
|
||||
-- ping $2.00
|
||||
-- pong $6.00 ; generated-posting: = ping
|
||||
-- <BLANKLINE>
|
||||
@ -88,7 +88,9 @@ transactionModifierToFunction mt =
|
||||
-- >>> tmParseQuery (TransactionModifier "date:2016" []) undefined
|
||||
-- Date (DateSpan 2016)
|
||||
-- >>> tmParseQuery (TransactionModifier "date:today" []) (read "2017-01-01")
|
||||
-- Date (DateSpan 2017/01/01)
|
||||
-- Date (DateSpan 2017-01-01)
|
||||
-- >>> tmParseQuery (TransactionModifier "date:today" []) (read "2017-01-01")
|
||||
-- Date (DateSpan 2017-01-01)
|
||||
tmParseQuery :: TransactionModifier -> (Day -> Query)
|
||||
tmParseQuery mt = fst . flip parseQuery (tmquerytxt mt)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user