more date utilities
This commit is contained in:
parent
a55046b4d6
commit
c1e8138609
@ -38,6 +38,9 @@ module Hledger.Data.Dates (
|
||||
datesepchar,
|
||||
datesepchars,
|
||||
spanIntersect,
|
||||
spansIntersect,
|
||||
spanUnion,
|
||||
spansUnion,
|
||||
orDatesFrom,
|
||||
smartdate,
|
||||
splitSpan,
|
||||
@ -47,6 +50,7 @@ module Hledger.Data.Dates (
|
||||
fixSmartDateStrEither',
|
||||
daysInSpan,
|
||||
maybePeriod,
|
||||
mkdatespan,
|
||||
)
|
||||
where
|
||||
|
||||
@ -143,12 +147,28 @@ orDatesFrom (DateSpan a1 b1) (DateSpan a2 b2) = DateSpan a b
|
||||
where a = if isJust a1 then a1 else a2
|
||||
b = if isJust b1 then b1 else b2
|
||||
|
||||
-- | Calculate the intersection of a number of datespans.
|
||||
spansIntersect [] = nulldatespan
|
||||
spansIntersect [d] = d
|
||||
spansIntersect (d:ds) = d `spanIntersect` (spansIntersect ds)
|
||||
|
||||
-- | Calculate the intersection of two datespans.
|
||||
spanIntersect (DateSpan b1 e1) (DateSpan b2 e2) = DateSpan b e
|
||||
where
|
||||
b = latest b1 b2
|
||||
e = earliest e1 e2
|
||||
|
||||
-- | Calculate the union of a number of datespans.
|
||||
spansUnion [] = nulldatespan
|
||||
spansUnion [d] = d
|
||||
spansUnion (d:ds) = d `spanUnion` (spansUnion ds)
|
||||
|
||||
-- | Calculate the union of two datespans.
|
||||
spanUnion (DateSpan b1 e1) (DateSpan b2 e2) = DateSpan b e
|
||||
where
|
||||
b = earliest b1 b2
|
||||
e = latest e1 e2
|
||||
|
||||
latest d Nothing = d
|
||||
latest Nothing d = d
|
||||
latest (Just d1) (Just d2) = Just $ max d1 d2
|
||||
|
||||
Loading…
Reference in New Issue
Block a user