summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2003-05-10 07:41:55 (GMT)
committerRaymond Hettinger <python@rcn.com>2003-05-10 07:41:55 (GMT)
commit0fd525fd1c8e2b3374c7acda0facbdce9dfbb63e (patch)
tree263c2e59c971d71cc7029c798e5acc6d1de2c62a
parent0dfd7a93617a33348a8d3b8155e8a037a1d8e283 (diff)
downloadcpython-0fd525fd1c8e2b3374c7acda0facbdce9dfbb63e.zip
cpython-0fd525fd1c8e2b3374c7acda0facbdce9dfbb63e.tar.gz
cpython-0fd525fd1c8e2b3374c7acda0facbdce9dfbb63e.tar.bz2
Add table level validation and made minor fix-ups.
-rw-r--r--Tools/scripts/texcheck.py30
1 files changed, 22 insertions, 8 deletions
diff --git a/Tools/scripts/texcheck.py b/Tools/scripts/texcheck.py
index 96acfc1..ed3f42d 100644
--- a/Tools/scripts/texcheck.py
+++ b/Tools/scripts/texcheck.py
@@ -22,10 +22,6 @@ Options:
-v: Verbose. Shows current delimiter and unclosed delimiters.
"""
-# Todo:
-# Add tableiii/lineiii cross-checking
-# Add braces matching
-
import re
import sets
import sys
@@ -53,7 +49,8 @@ cmdstr = r"""
\textbackslash \mimetype \mailheader \seepep \textunderscore
\longprogramopt \infinity \plusminus \shortversion \version
\refmodindex \seerfc \makeindex \makemodindex \renewcommand
- \indexname \appendix
+ \indexname \appendix \protect \indexiv \mbox \textasciitilde
+ \platform \seeurl \leftmargin \labelwidth \localmoduletable
"""
def matchclose(c_lineno, c_symbol, openers, pairmap):
@@ -68,7 +65,7 @@ def matchclose(c_lineno, c_symbol, openers, pairmap):
raise Exception, msg
def checkit(source, opts, morecmds=[]):
- """Check the LaTex formatting in a sequence of lines.
+ """Check the LaTeX formatting in a sequence of lines.
Opts is a mapping of options to option values if any:
-m munge parenthesis and brackets
@@ -77,7 +74,7 @@ def checkit(source, opts, morecmds=[]):
-v verbose listing on delimiters
-s lineno: linenumber to start scan (default is 1).
- Morecmds is a sequence of LaTex commands (without backslashes) that
+ Morecmds is a sequence of LaTeX commands (without backslashes) that
are to be considered valid in the scan.
"""
@@ -97,6 +94,12 @@ def checkit(source, opts, morecmds=[]):
delimiters = re.compile(r'\\(begin|end){([_a-zA-Z]+)}|([()\[\]])')
+ tablestart = re.compile(r'\\begin{(?:long)?table([iv]+)}')
+ tableline = re.compile(r'\\line([iv]+){')
+ tableend = re.compile(r'\\end{(?:long)?table([iv]+)}')
+ tablelevel = ''
+ tablestartline = 0
+
startline = int(opts.get('-s', '1'))
lineno = 0
@@ -134,8 +137,19 @@ def checkit(source, opts, morecmds=[]):
if '-v' in opts:
print ' --> ', openers
+ # Check table levels (make sure lineii only inside lineiii)
+ m = tablestart.search(line)
+ if m:
+ tablelevel = m.group(1)
+ tablestartline = lineno
+ m = tableline.search(line)
+ if m and m.group(1) != tablelevel:
+ print r'Warning, \line%s on line %d does not match \table%s on line %d' % (m.group(1), lineno, tablelevel, tablestartline)
+ if tableend.search(line):
+ tablelevel = ''
+
for lineno, symbol in openers:
- print "Unmatched open delimiter '%s' on line %d", (symbol, lineno)
+ print "Unmatched open delimiter '%s' on line %d" % (symbol, lineno)
print 'Done checking %d lines.' % (lineno,)
return 0