Skip to content

Instantly share code, notes, and snippets.

@rclmenezes
Created November 20, 2014 21:47
Show Gist options
  • Save rclmenezes/b27bc68a1345cd815b74 to your computer and use it in GitHub Desktop.
Save rclmenezes/b27bc68a1345cd815b74 to your computer and use it in GitHub Desktop.
merge_dates
from datetime import date
class DateRange(object):
def __init__(self, start_date, end_date):
self.start_date = start_date
self.end_date = end_date
def __repr__(self):
return "<%s: %s - %s>" % (self.__class__.__name__,
self.start_date,
self.end_date)
def merge_dates(date_ranges):
"""
Merges the redundant date_ranges together and returns them as a generator.
Doesn't merge separate DateRanges
>>> date_ranges = [DateRange(date(2014, 01, 01), date(2014, 01, 28)), \
DateRange(date(2014, 02, 01), date(2014, 03, 01))]
>>> list(merge_dates(date_ranges))
[<DateRange: 2014-01-01 - 2014-01-28>, <DateRange: 2014-02-01 - 2014-03-01>]
Merges intersecting DateRanges
>>> date_ranges = [DateRange(date(2014, 01, 01), date(2014, 02, 28)), \
DateRange(date(2014, 02, 01), date(2014, 04, 01))]
>>> list(merge_dates(date_ranges))
[<DateRange: 2014-01-01 - 2014-04-01>]
"""
raise NotImplementedError()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment