|
|
- #!/usr/bin/python
- #
- # Print a bunch of dates, one week apart, replacing dates at the beginning
- # of standard input.
- #
-
- import string, sys
- from time import gmtime,mktime
-
- ndays = [ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]
- step = 7
- skipdays = [ 0, 0, 0, 0, 0, 0, 0 ]
- countdays = [ 1, 1, 1, 1, 1, 1, 1 ]
- europe = 0
-
- while sys.argv[1][0] == '-':
- if sys.argv[1] == '-step':
- step = string.atoi(sys.argv[2])
- sys.argv = sys.argv[2:]
-
- if sys.argv[1] == '-e':
- europe = 1
- sys.argv = sys.argv[1:]
-
- if sys.argv[1] == '-daily':
- step = 1
- # Skip Saturday and Sunday
- skipdays[5] = 1
- skipdays[6] = 1
- sys.argv = sys.argv[1:]
-
- if sys.argv[1] == '-on':
- step = 1
- skipdays = [ 1, 1, 1, 1, 1, 1, 1 ]
- for num in string.splitfields(sys.argv[2], ','):
- skipdays[string.atoi(num)] = 0
- sys.argv = sys.argv[2:]
-
- if sys.argv[1] == '-repeat':
- for num in string.splitfields(sys.argv[2], ','):
- n = string.atoi(num)
- countdays[n] = countdays[n] + 1
- sys.argv = sys.argv[2:]
-
- if sys.argv[1] == '-skip':
- step = 1
- skipdays = [ 0, 0, 0, 0, 0, 0, 0 ]
- for num in string.splitfields(sys.argv[2], ','):
- skipdays[string.atoi(num)] = 1
- sys.argv = sys.argv[2:]
-
- year = string.atoi(sys.argv[1])
- month = string.atoi(sys.argv[2])
- day = string.atoi(sys.argv[3])
- if year < 93:
- year = year + 100
-
- (x,x,x,x,x,x,weekday,x,x) = gmtime(mktime(year + 1900, month,
- day, 10, 0, 0, 0, 0, 0))
- thisdaycount = 0
-
- if len(sys.argv) > 4:
- step = string.atoi(sys.argv[4])
-
- if (year & 3) == 0:
- ndays[2] = 29
-
- line = sys.stdin.readline()
- while line != '':
- if line[0:5] == '<pre>':
- head = '<pre>'
- line = line[5:]
- else:
- head = ''
-
- if not (line[0] in ['0','1','2','3','4','5','6','7','8','9','?']):
- sys.stdout.write(head + line)
- line = sys.stdin.readline()
- continue
- else:
- if europe == 1:
- sys.stdout.write('%s%02d/%02d/%02d%s' % (head,
- day, month, year % 100, line[8:]))
- else:
- sys.stdout.write('%s%02d/%02d/%02d%s' % (head,
- year % 100, month, day, line[8:]))
-
- line = sys.stdin.readline()
-
- thisdaycount = thisdaycount + 1
- if thisdaycount < countdays[weekday]:
- continue
-
- day = day + step
- (x,x,x,x,x,x,weekday,x,x) = gmtime(mktime(year + 1900, month,
- day, 10, 0, 0, 0, 0, 0))
- thisdaycount = 0
-
- while skipdays[weekday]:
- day = day + 1
- weekday = (weekday + 1) % 7
-
- if day > ndays[month]:
- day = day - ndays[month]
- month = month + 1
-
- if month > 12:
- month = 1
-
- year = year + 1
-
- if (year & 3) == 0:
- ndays[2] = 29
- else:
- ndays[2] = 28
|