Add --overlaps
This commit is contained in:
parent
5bddaa909d
commit
cdc6e22a2b
|
@ -12,24 +12,32 @@ def parse_date(text):
|
||||||
return tuple(map(int, split))
|
return tuple(map(int, split))
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
if len(sys.argv) == 2:
|
args = sys.argv[1:]
|
||||||
|
|
||||||
|
if len(args) > 1 and args[0] == '--overlaps':
|
||||||
|
only_overlaps = True
|
||||||
|
args = args[1:]
|
||||||
|
else:
|
||||||
|
only_overlaps = False
|
||||||
|
|
||||||
|
if len(args) == 1:
|
||||||
year, week, day = datetime.date.today().isocalendar()
|
year, week, day = datetime.date.today().isocalendar()
|
||||||
if day >= 6: # on weekend, show next week
|
if day >= 6: # on weekend, show next week
|
||||||
year, week, day = (datetime.date.today() + datetime.timedelta(2)).isocalendar()
|
year, week, day = (datetime.date.today() + datetime.timedelta(2)).isocalendar()
|
||||||
dates = daterange.week(year, week)
|
dates = daterange.week(year, week)
|
||||||
filename = sys.argv[1]
|
filename = args[0]
|
||||||
elif len(sys.argv) == 3:
|
elif len(args) == 2:
|
||||||
filename = sys.argv[1]
|
filename = args[0]
|
||||||
date = parse_date(sys.argv[2])
|
date = parse_date(args[1])
|
||||||
dates = daterange.between(date, date)
|
dates = daterange.between(date, date)
|
||||||
elif len(sys.argv) == 4:
|
elif len(args) == 3:
|
||||||
filename = sys.argv[1]
|
filename = args[0]
|
||||||
start = parse_date(sys.argv[2])
|
start = parse_date(args[1])
|
||||||
end = parse_date(sys.argv[3])
|
end = parse_date(args[2])
|
||||||
dates = daterange.between(start, end)
|
dates = daterange.between(start, end)
|
||||||
else:
|
else:
|
||||||
print('%s file [start [end]]' % (os.path.basename(sys.argv[0])))
|
print('%s [--overlaps] file [start [end]]' % (os.path.basename(sys.argv[0])), file = sys.stderr)
|
||||||
print('start and end are in yyyy-mm-dd format')
|
print('start and end are in yyyy-mm-dd format', file = sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
with open(filename, 'r') as f:
|
with open(filename, 'r') as f:
|
||||||
|
@ -66,17 +74,26 @@ def main():
|
||||||
for date, entries in timetable_by_date:
|
for date, entries in timetable_by_date:
|
||||||
entries.sort(key = lambda x: x[0].range()[0])
|
entries.sort(key = lambda x: x[0].range()[0])
|
||||||
previous_time_range = None
|
previous_time_range = None
|
||||||
print(date)
|
previous_name = None
|
||||||
|
if not only_overlaps:
|
||||||
|
print(date)
|
||||||
for time_range, name, info in entries:
|
for time_range, name, info in entries:
|
||||||
print('\t%s %s: %s' % (time_range, name, info))
|
if not only_overlaps:
|
||||||
|
print('\t%s %s: %s' % (time_range, name, info))
|
||||||
if previous_time_range is not None:
|
if previous_time_range is not None:
|
||||||
if time_range.overlaps(previous_time_range):
|
if time_range.overlaps(previous_time_range):
|
||||||
print('\t\tOverlap')
|
if only_overlaps:
|
||||||
|
print('%s: %s %s | %s %s' % (date, previous_time_range, previous_name, time_range, name))
|
||||||
|
else:
|
||||||
|
print('\t\tOverlap')
|
||||||
# If the current's ending time is before the previous's, don't change previous_time_range in case it overlaps with several
|
# If the current's ending time is before the previous's, don't change previous_time_range in case it overlaps with several
|
||||||
# If current's ending time after, it's safe to change
|
# If current's ending time after, it's safe to change
|
||||||
if time_range.range()[1] >= previous_time_range.range()[1]:
|
if time_range.range()[1] >= previous_time_range.range()[1]:
|
||||||
previous_time_range = time_range
|
previous_time_range = time_range
|
||||||
|
previous_name = name
|
||||||
else:
|
else:
|
||||||
previous_time_range = time_range
|
previous_time_range = time_range
|
||||||
|
previous_name = name
|
||||||
else:
|
else:
|
||||||
previous_time_range = time_range
|
previous_time_range = time_range
|
||||||
|
previous_name = name
|
||||||
|
|
Loading…
Reference in New Issue