diff options
author | DasIch <dasdasich@gmail.com> | 2010-05-17 01:11:22 +0200 |
---|---|---|
committer | DasIch <dasdasich@gmail.com> | 2010-05-17 01:11:22 +0200 |
commit | b5756a3be2d9a3f715d10bdac5514c37f7277fb6 (patch) | |
tree | 87ca9cb2e0ed017042764f15ee71e8a68b843329 /utils | |
parent | a9e0d6582b7604b5da9e1d438fd72844ce0a3218 (diff) | |
download | sphinx-b5756a3be2d9a3f715d10bdac5514c37f7277fb6.tar.gz |
ported utils/reindent.py to python 3.x
Diffstat (limited to 'utils')
-rwxr-xr-x | utils/reindent.py | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/utils/reindent.py b/utils/reindent.py index bcb6b434..63ff7ef7 100755 --- a/utils/reindent.py +++ b/utils/reindent.py @@ -47,6 +47,17 @@ recurse = 0 dryrun = 0 no_backup = 0 +if sys.version_info >= (3, 0): + def tokens(readline, tokeneater): + for token in tokenize.tokenize(readline): + tokeneater(*token) + + def b(s): + return s.encode('utf-8') +else: + tokens = tokenize.tokenize + b = str + def usage(msg=None): if msg is not None: print >> sys.stderr, msg @@ -106,7 +117,7 @@ def check(file): if verbose: print "checking", file, "...", try: - f = open(file) + f = open(file, 'rb') except IOError, msg: errprint("%s: I/O Error: %s" % (file, str(msg))) return @@ -129,7 +140,7 @@ def check(file): os.rename(file, bak) if verbose: print "renamed", file, "to", bak - f = open(file, "w") + f = open(file, "wb") r.write(f) f.close() if verbose: @@ -151,7 +162,7 @@ class Reindenter: # File lines, rstripped & tab-expanded. Dummy at start is so # that we can use tokenize's 1-based line numbering easily. # Note that a line is all-blank iff it's "\n". - self.lines = [line.rstrip('\n \t').expandtabs() + "\n" + self.lines = [line.rstrip(b('\n \t')).expandtabs() + b("\n") for line in self.raw] self.lines.insert(0, None) self.index = 1 # index into self.lines of next line @@ -163,10 +174,10 @@ class Reindenter: self.stats = [] def run(self): - tokenize.tokenize(self.getline, self.tokeneater) + tokens(self.getline, self.tokeneater) # Remove trailing empty lines. lines = self.lines - while lines and lines[-1] == "\n": + while lines and lines[-1] == b("\n"): lines.pop() # Sentinel. stats = self.stats @@ -222,10 +233,10 @@ class Reindenter: else: for line in lines[thisstmt:nextstmt]: if diff > 0: - if line == "\n": + if line == b("\n"): after.append(line) else: - after.append(" " * diff + line) + after.append(b(" ") * diff + line) else: remove = min(getlspace(line), -diff) after.append(line[remove:]) @@ -237,7 +248,7 @@ class Reindenter: # Line-getter for tokenize. def getline(self): if self.index >= len(self.lines): - line = "" + line = b("") else: line = self.lines[self.index] self.index += 1 @@ -286,7 +297,7 @@ class Reindenter: # Count number of leading blanks. def getlspace(line): i, n = 0, len(line) - while i < n and line[i] == " ": + while i < n and line[i] == b(" "): i += 1 return i |