mirror of https://github.com/python/cpython.git
Tim's version 4, with my mods
This commit is contained in:
parent
c9ea7572e9
commit
ce73acf5e6
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
"""The Tab Nanny despises ambiguous indentation. She knows no mercy."""
|
"""The Tab Nanny despises ambiguous indentation. She knows no mercy."""
|
||||||
|
|
||||||
# Released to the public domain, by Tim Peters, 4 April 1998.
|
# Released to the public domain, by Tim Peters, 6 April 1998.
|
||||||
|
|
||||||
__version__ = "3"
|
__version__ = "4"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
@ -24,7 +24,7 @@ def main():
|
||||||
if o == '-v':
|
if o == '-v':
|
||||||
verbose = verbose + 1
|
verbose = verbose + 1
|
||||||
if not args:
|
if not args:
|
||||||
print "Usage:", sys.argv[0], "file_or_directory ..."
|
print "Usage:", sys.argv[0], "[-v] file_or_directory ..."
|
||||||
return
|
return
|
||||||
for arg in args:
|
for arg in args:
|
||||||
check(arg)
|
check(arg)
|
||||||
|
@ -245,18 +245,10 @@ def tokeneater(type, token, start, end, line,
|
||||||
INDENT=tokenize.INDENT,
|
INDENT=tokenize.INDENT,
|
||||||
DEDENT=tokenize.DEDENT,
|
DEDENT=tokenize.DEDENT,
|
||||||
NEWLINE=tokenize.NEWLINE,
|
NEWLINE=tokenize.NEWLINE,
|
||||||
COMMENT=tokenize.COMMENT,
|
JUNK=(tokenize.COMMENT, tokenize.NL) ):
|
||||||
NL=tokenize.NL):
|
|
||||||
global indents, check_equal
|
global indents, check_equal
|
||||||
|
|
||||||
# test in decreasing order of frequency, although the check_equal
|
if type == NEWLINE:
|
||||||
# test *must* be last; INDENT and DEDENT appear equally often
|
|
||||||
|
|
||||||
if type in (COMMENT, NL):
|
|
||||||
# the indentation of these guys is meaningless
|
|
||||||
pass
|
|
||||||
|
|
||||||
elif type == NEWLINE:
|
|
||||||
# a program statement, or ENDMARKER, will eventually follow,
|
# a program statement, or ENDMARKER, will eventually follow,
|
||||||
# after some (possibly empty) run of tokens of the form
|
# after some (possibly empty) run of tokens of the form
|
||||||
# (NL | COMMENT)* (INDENT | DEDENT+)?
|
# (NL | COMMENT)* (INDENT | DEDENT+)?
|
||||||
|
@ -281,7 +273,7 @@ def tokeneater(type, token, start, end, line,
|
||||||
assert check_equal # else no earlier NEWLINE, or an earlier INDENT
|
assert check_equal # else no earlier NEWLINE, or an earlier INDENT
|
||||||
del indents[-1]
|
del indents[-1]
|
||||||
|
|
||||||
elif check_equal:
|
elif check_equal and type not in JUNK:
|
||||||
# this is the first "real token" following a NEWLINE, so it
|
# this is the first "real token" following a NEWLINE, so it
|
||||||
# must be the first token of the next program statement, or an
|
# must be the first token of the next program statement, or an
|
||||||
# ENDMARKER; the "line" argument exposes the leading whitespace
|
# ENDMARKER; the "line" argument exposes the leading whitespace
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
"""The Tab Nanny despises ambiguous indentation. She knows no mercy."""
|
"""The Tab Nanny despises ambiguous indentation. She knows no mercy."""
|
||||||
|
|
||||||
# Released to the public domain, by Tim Peters, 4 April 1998.
|
# Released to the public domain, by Tim Peters, 6 April 1998.
|
||||||
|
|
||||||
__version__ = "3"
|
__version__ = "4"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
@ -24,7 +24,7 @@ def main():
|
||||||
if o == '-v':
|
if o == '-v':
|
||||||
verbose = verbose + 1
|
verbose = verbose + 1
|
||||||
if not args:
|
if not args:
|
||||||
print "Usage:", sys.argv[0], "file_or_directory ..."
|
print "Usage:", sys.argv[0], "[-v] file_or_directory ..."
|
||||||
return
|
return
|
||||||
for arg in args:
|
for arg in args:
|
||||||
check(arg)
|
check(arg)
|
||||||
|
@ -245,18 +245,10 @@ def tokeneater(type, token, start, end, line,
|
||||||
INDENT=tokenize.INDENT,
|
INDENT=tokenize.INDENT,
|
||||||
DEDENT=tokenize.DEDENT,
|
DEDENT=tokenize.DEDENT,
|
||||||
NEWLINE=tokenize.NEWLINE,
|
NEWLINE=tokenize.NEWLINE,
|
||||||
COMMENT=tokenize.COMMENT,
|
JUNK=(tokenize.COMMENT, tokenize.NL) ):
|
||||||
NL=tokenize.NL):
|
|
||||||
global indents, check_equal
|
global indents, check_equal
|
||||||
|
|
||||||
# test in decreasing order of frequency, although the check_equal
|
if type == NEWLINE:
|
||||||
# test *must* be last; INDENT and DEDENT appear equally often
|
|
||||||
|
|
||||||
if type in (COMMENT, NL):
|
|
||||||
# the indentation of these guys is meaningless
|
|
||||||
pass
|
|
||||||
|
|
||||||
elif type == NEWLINE:
|
|
||||||
# a program statement, or ENDMARKER, will eventually follow,
|
# a program statement, or ENDMARKER, will eventually follow,
|
||||||
# after some (possibly empty) run of tokens of the form
|
# after some (possibly empty) run of tokens of the form
|
||||||
# (NL | COMMENT)* (INDENT | DEDENT+)?
|
# (NL | COMMENT)* (INDENT | DEDENT+)?
|
||||||
|
@ -281,7 +273,7 @@ def tokeneater(type, token, start, end, line,
|
||||||
assert check_equal # else no earlier NEWLINE, or an earlier INDENT
|
assert check_equal # else no earlier NEWLINE, or an earlier INDENT
|
||||||
del indents[-1]
|
del indents[-1]
|
||||||
|
|
||||||
elif check_equal:
|
elif check_equal and type not in JUNK:
|
||||||
# this is the first "real token" following a NEWLINE, so it
|
# this is the first "real token" following a NEWLINE, so it
|
||||||
# must be the first token of the next program statement, or an
|
# must be the first token of the next program statement, or an
|
||||||
# ENDMARKER; the "line" argument exposes the leading whitespace
|
# ENDMARKER; the "line" argument exposes the leading whitespace
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
"""The Tab Nanny despises ambiguous indentation. She knows no mercy."""
|
"""The Tab Nanny despises ambiguous indentation. She knows no mercy."""
|
||||||
|
|
||||||
# Released to the public domain, by Tim Peters, 4 April 1998.
|
# Released to the public domain, by Tim Peters, 6 April 1998.
|
||||||
|
|
||||||
__version__ = "3"
|
__version__ = "4"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
@ -24,7 +24,7 @@ def main():
|
||||||
if o == '-v':
|
if o == '-v':
|
||||||
verbose = verbose + 1
|
verbose = verbose + 1
|
||||||
if not args:
|
if not args:
|
||||||
print "Usage:", sys.argv[0], "file_or_directory ..."
|
print "Usage:", sys.argv[0], "[-v] file_or_directory ..."
|
||||||
return
|
return
|
||||||
for arg in args:
|
for arg in args:
|
||||||
check(arg)
|
check(arg)
|
||||||
|
@ -245,18 +245,10 @@ def tokeneater(type, token, start, end, line,
|
||||||
INDENT=tokenize.INDENT,
|
INDENT=tokenize.INDENT,
|
||||||
DEDENT=tokenize.DEDENT,
|
DEDENT=tokenize.DEDENT,
|
||||||
NEWLINE=tokenize.NEWLINE,
|
NEWLINE=tokenize.NEWLINE,
|
||||||
COMMENT=tokenize.COMMENT,
|
JUNK=(tokenize.COMMENT, tokenize.NL) ):
|
||||||
NL=tokenize.NL):
|
|
||||||
global indents, check_equal
|
global indents, check_equal
|
||||||
|
|
||||||
# test in decreasing order of frequency, although the check_equal
|
if type == NEWLINE:
|
||||||
# test *must* be last; INDENT and DEDENT appear equally often
|
|
||||||
|
|
||||||
if type in (COMMENT, NL):
|
|
||||||
# the indentation of these guys is meaningless
|
|
||||||
pass
|
|
||||||
|
|
||||||
elif type == NEWLINE:
|
|
||||||
# a program statement, or ENDMARKER, will eventually follow,
|
# a program statement, or ENDMARKER, will eventually follow,
|
||||||
# after some (possibly empty) run of tokens of the form
|
# after some (possibly empty) run of tokens of the form
|
||||||
# (NL | COMMENT)* (INDENT | DEDENT+)?
|
# (NL | COMMENT)* (INDENT | DEDENT+)?
|
||||||
|
@ -281,7 +273,7 @@ def tokeneater(type, token, start, end, line,
|
||||||
assert check_equal # else no earlier NEWLINE, or an earlier INDENT
|
assert check_equal # else no earlier NEWLINE, or an earlier INDENT
|
||||||
del indents[-1]
|
del indents[-1]
|
||||||
|
|
||||||
elif check_equal:
|
elif check_equal and type not in JUNK:
|
||||||
# this is the first "real token" following a NEWLINE, so it
|
# this is the first "real token" following a NEWLINE, so it
|
||||||
# must be the first token of the next program statement, or an
|
# must be the first token of the next program statement, or an
|
||||||
# ENDMARKER; the "line" argument exposes the leading whitespace
|
# ENDMARKER; the "line" argument exposes the leading whitespace
|
||||||
|
|
Loading…
Reference in New Issue