diff --git a/src/helper.cpp b/src/helper.cpp index ea74a1ae..5473038e 100644 --- a/src/helper.cpp +++ b/src/helper.cpp @@ -458,3 +458,24 @@ std::vector subtractRanges ( } //////////////////////////////////////////////////////////////////////////////// +Daterange overallRangeFromIntervals (const std::vector & intervals) +{ + Daterange overall; + + for (auto& interval : intervals) + { + if (interval.start () < overall.start () || overall.start ().toEpoch () == 0) + overall.start (interval.start ()); + + // Deliberately mixed start/end. + if (interval.start () > overall.end ()) + overall.end (interval.start ()); + + if (interval.end () > overall.end ()) + overall.end (interval.end ()); + } + + return overall; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/timew.h b/src/timew.h index 829f5162..36b1496f 100644 --- a/src/timew.h +++ b/src/timew.h @@ -57,6 +57,7 @@ std::string jsonFromIntervals (const std::vector &); std::vector rangesFromHolidays (const Rules&); std::vector addRanges (const Daterange&, const std::vector &, const std::vector &); std::vector subtractRanges (const Daterange&, const std::vector &, const std::vector &); +Daterange overallRangeFromIntervals (const std::vector &); // utiƀ.cpp std::string osName ();