mirror of
https://github.com/python/cpython.git
synced 2025-08-28 04:35:02 +00:00
give in to tab police
This commit is contained in:
parent
3db0e3713c
commit
ed5b3d8b3c
6 changed files with 440 additions and 435 deletions
|
@ -26,25 +26,25 @@ from their output.
|
|||
|
||||
import os, sys, getopt, string, re
|
||||
|
||||
sep1 = '='*77 + '\n' # file separator
|
||||
sep2 = '-'*28 + '\n' # revision separator
|
||||
sep1 = '='*77 + '\n' # file separator
|
||||
sep2 = '-'*28 + '\n' # revision separator
|
||||
|
||||
def main():
|
||||
"""Main program"""
|
||||
truncate_last = 0
|
||||
opts, args = getopt.getopt(sys.argv[1:], "-t")
|
||||
for o, a in opts:
|
||||
if o == '-t':
|
||||
truncate_last = 1
|
||||
if o == '-t':
|
||||
truncate_last = 1
|
||||
database = []
|
||||
while 1:
|
||||
chunk = read_chunk(sys.stdin)
|
||||
if not chunk:
|
||||
break
|
||||
records = digest_chunk(chunk)
|
||||
if truncate_last:
|
||||
del records[-1]
|
||||
database[len(database):] = records
|
||||
chunk = read_chunk(sys.stdin)
|
||||
if not chunk:
|
||||
break
|
||||
records = digest_chunk(chunk)
|
||||
if truncate_last:
|
||||
del records[-1]
|
||||
database[len(database):] = records
|
||||
database.sort()
|
||||
database.reverse()
|
||||
format_output(database)
|
||||
|
@ -58,19 +58,19 @@ def read_chunk(fp):
|
|||
chunk = []
|
||||
lines = []
|
||||
while 1:
|
||||
line = fp.readline()
|
||||
if not line:
|
||||
break
|
||||
if line == sep1:
|
||||
if lines:
|
||||
chunk.append(lines)
|
||||
break
|
||||
if line == sep2:
|
||||
if lines:
|
||||
chunk.append(lines)
|
||||
lines = []
|
||||
else:
|
||||
lines.append(line)
|
||||
line = fp.readline()
|
||||
if not line:
|
||||
break
|
||||
if line == sep1:
|
||||
if lines:
|
||||
chunk.append(lines)
|
||||
break
|
||||
if line == sep2:
|
||||
if lines:
|
||||
chunk.append(lines)
|
||||
lines = []
|
||||
else:
|
||||
lines.append(line)
|
||||
return chunk
|
||||
|
||||
def digest_chunk(chunk):
|
||||
|
@ -79,53 +79,53 @@ def digest_chunk(chunk):
|
|||
key = 'Working file:'
|
||||
keylen = len(key)
|
||||
for line in lines:
|
||||
if line[:keylen] == key:
|
||||
working_file = string.strip(line[keylen:])
|
||||
break
|
||||
if line[:keylen] == key:
|
||||
working_file = string.strip(line[keylen:])
|
||||
break
|
||||
else:
|
||||
working_file = None
|
||||
working_file = None
|
||||
records = []
|
||||
for lines in chunk[1:]:
|
||||
revline = lines[0]
|
||||
dateline = lines[1]
|
||||
text = lines[2:]
|
||||
words = string.split(dateline)
|
||||
author = None
|
||||
if len(words) >= 3 and words[0] == 'date:':
|
||||
dateword = words[1]
|
||||
timeword = words[2]
|
||||
if timeword[-1:] == ';':
|
||||
timeword = timeword[:-1]
|
||||
date = dateword + ' ' + timeword
|
||||
if len(words) >= 5 and words[3] == 'author:':
|
||||
author = words[4]
|
||||
if author[-1:] == ';':
|
||||
author = author[:-1]
|
||||
else:
|
||||
date = None
|
||||
text.insert(0, revline)
|
||||
words = string.split(revline)
|
||||
if len(words) >= 2 and words[0] == 'revision':
|
||||
rev = words[1]
|
||||
else:
|
||||
rev = None
|
||||
text.insert(0, revline)
|
||||
records.append((date, working_file, rev, author, text))
|
||||
revline = lines[0]
|
||||
dateline = lines[1]
|
||||
text = lines[2:]
|
||||
words = string.split(dateline)
|
||||
author = None
|
||||
if len(words) >= 3 and words[0] == 'date:':
|
||||
dateword = words[1]
|
||||
timeword = words[2]
|
||||
if timeword[-1:] == ';':
|
||||
timeword = timeword[:-1]
|
||||
date = dateword + ' ' + timeword
|
||||
if len(words) >= 5 and words[3] == 'author:':
|
||||
author = words[4]
|
||||
if author[-1:] == ';':
|
||||
author = author[:-1]
|
||||
else:
|
||||
date = None
|
||||
text.insert(0, revline)
|
||||
words = string.split(revline)
|
||||
if len(words) >= 2 and words[0] == 'revision':
|
||||
rev = words[1]
|
||||
else:
|
||||
rev = None
|
||||
text.insert(0, revline)
|
||||
records.append((date, working_file, rev, author, text))
|
||||
return records
|
||||
|
||||
|
||||
def format_output(database):
|
||||
prevtext = None
|
||||
prev = []
|
||||
database.append((None, None, None, None, None)) # Sentinel
|
||||
for (date, working_file, rev, author, text) in database:
|
||||
if text != prevtext:
|
||||
if prev:
|
||||
print sep2,
|
||||
for (p_date, p_working_file, p_rev, p_author) in prev:
|
||||
print p_date, p_author, p_working_file
|
||||
sys.stdout.writelines(prevtext)
|
||||
prev = []
|
||||
prev.append((date, working_file, rev, author))
|
||||
prevtext = text
|
||||
if text != prevtext:
|
||||
if prev:
|
||||
print sep2,
|
||||
for (p_date, p_working_file, p_rev, p_author) in prev:
|
||||
print p_date, p_author, p_working_file
|
||||
sys.stdout.writelines(prevtext)
|
||||
prev = []
|
||||
prev.append((date, working_file, rev, author))
|
||||
prevtext = text
|
||||
|
||||
main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue