mirror of
https://github.com/python/cpython.git
synced 2025-07-23 19:25:40 +00:00
Add table level validation and made minor fix-ups.
This commit is contained in:
parent
0dfd7a9361
commit
0fd525fd1c
1 changed files with 22 additions and 8 deletions
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue