| Index: tools/nixysa/third_party/ply-3.1/doc/makedoc.py
|
| ===================================================================
|
| --- tools/nixysa/third_party/ply-3.1/doc/makedoc.py (revision 0)
|
| +++ tools/nixysa/third_party/ply-3.1/doc/makedoc.py (revision 0)
|
| @@ -0,0 +1,194 @@
|
| +#!/usr/local/bin/python
|
| +
|
| +###############################################################################
|
| +# Takes a chapter as input and adds internal links and numbering to all
|
| +# of the H1, H2, H3, H4 and H5 sections.
|
| +#
|
| +# Every heading HTML tag (H1, H2 etc) is given an autogenerated name to link
|
| +# to. However, if the name is not an autogenerated name from a previous run,
|
| +# it will be kept. If it is autogenerated, it might change on subsequent runs
|
| +# of this program. Thus if you want to create links to one of the headings,
|
| +# then change the heading link name to something that does not look like an
|
| +# autogenerated link name.
|
| +###############################################################################
|
| +
|
| +import sys
|
| +import re
|
| +import string
|
| +
|
| +###############################################################################
|
| +# Functions
|
| +###############################################################################
|
| +
|
| +# Regexs for <a name="..."></a>
|
| +alink = re.compile(r"<a *name *= *\"(.*)\"></a>", re.IGNORECASE)
|
| +heading = re.compile(r"(_nn\d)", re.IGNORECASE)
|
| +
|
| +def getheadingname(m):
|
| + autogeneratedheading = True;
|
| + if m.group(1) != None:
|
| + amatch = alink.match(m.group(1))
|
| + if amatch:
|
| + # A non-autogenerated heading - keep it
|
| + headingname = amatch.group(1)
|
| + autogeneratedheading = heading.match(headingname)
|
| + if autogeneratedheading:
|
| + # The heading name was either non-existent or autogenerated,
|
| + # We can create a new heading / change the existing heading
|
| + headingname = "%s_nn%d" % (filenamebase, nameindex)
|
| + return headingname
|
| +
|
| +###############################################################################
|
| +# Main program
|
| +###############################################################################
|
| +
|
| +if len(sys.argv) != 2:
|
| + print "usage: makedoc.py filename"
|
| + sys.exit(1)
|
| +
|
| +filename = sys.argv[1]
|
| +filenamebase = string.split(filename,".")[0]
|
| +
|
| +section = 0
|
| +subsection = 0
|
| +subsubsection = 0
|
| +subsubsubsection = 0
|
| +nameindex = 0
|
| +
|
| +name = ""
|
| +
|
| +# Regexs for <h1>,... <h5> sections
|
| +
|
| +h1 = re.compile(r".*?<H1>(<a.*a>)*[\d\.\s]*(.*?)</H1>", re.IGNORECASE)
|
| +h2 = re.compile(r".*?<H2>(<a.*a>)*[\d\.\s]*(.*?)</H2>", re.IGNORECASE)
|
| +h3 = re.compile(r".*?<H3>(<a.*a>)*[\d\.\s]*(.*?)</H3>", re.IGNORECASE)
|
| +h4 = re.compile(r".*?<H4>(<a.*a>)*[\d\.\s]*(.*?)</H4>", re.IGNORECASE)
|
| +h5 = re.compile(r".*?<H5>(<a.*a>)*[\d\.\s]*(.*?)</H5>", re.IGNORECASE)
|
| +
|
| +data = open(filename).read() # Read data
|
| +open(filename+".bak","w").write(data) # Make backup
|
| +
|
| +lines = data.splitlines()
|
| +result = [ ] # This is the result of postprocessing the file
|
| +index = "<!-- INDEX -->\n<div class=\"sectiontoc\">\n" # index contains the index for adding at the top of the file. Also printed to stdout.
|
| +
|
| +skip = 0
|
| +skipspace = 0
|
| +
|
| +for s in lines:
|
| + if s == "<!-- INDEX -->":
|
| + if not skip:
|
| + result.append("@INDEX@")
|
| + skip = 1
|
| + else:
|
| + skip = 0
|
| + continue;
|
| + if skip:
|
| + continue
|
| +
|
| + if not s and skipspace:
|
| + continue
|
| +
|
| + if skipspace:
|
| + result.append("")
|
| + result.append("")
|
| + skipspace = 0
|
| +
|
| + m = h2.match(s)
|
| + if m:
|
| + prevheadingtext = m.group(2)
|
| + nameindex += 1
|
| + section += 1
|
| + headingname = getheadingname(m)
|
| + result.append("""<H2><a name="%s"></a>%d. %s</H2>""" % (headingname,section, prevheadingtext))
|
| +
|
| + if subsubsubsection:
|
| + index += "</ul>\n"
|
| + if subsubsection:
|
| + index += "</ul>\n"
|
| + if subsection:
|
| + index += "</ul>\n"
|
| + if section == 1:
|
| + index += "<ul>\n"
|
| +
|
| + index += """<li><a href="#%s">%s</a>\n""" % (headingname,prevheadingtext)
|
| + subsection = 0
|
| + subsubsection = 0
|
| + subsubsubsection = 0
|
| + skipspace = 1
|
| + continue
|
| + m = h3.match(s)
|
| + if m:
|
| + prevheadingtext = m.group(2)
|
| + nameindex += 1
|
| + subsection += 1
|
| + headingname = getheadingname(m)
|
| + result.append("""<H3><a name="%s"></a>%d.%d %s</H3>""" % (headingname,section, subsection, prevheadingtext))
|
| +
|
| + if subsubsubsection:
|
| + index += "</ul>\n"
|
| + if subsubsection:
|
| + index += "</ul>\n"
|
| + if subsection == 1:
|
| + index += "<ul>\n"
|
| +
|
| + index += """<li><a href="#%s">%s</a>\n""" % (headingname,prevheadingtext)
|
| + subsubsection = 0
|
| + skipspace = 1
|
| + continue
|
| + m = h4.match(s)
|
| + if m:
|
| + prevheadingtext = m.group(2)
|
| + nameindex += 1
|
| + subsubsection += 1
|
| + subsubsubsection = 0
|
| + headingname = getheadingname(m)
|
| + result.append("""<H4><a name="%s"></a>%d.%d.%d %s</H4>""" % (headingname,section, subsection, subsubsection, prevheadingtext))
|
| +
|
| + if subsubsubsection:
|
| + index += "</ul>\n"
|
| + if subsubsection == 1:
|
| + index += "<ul>\n"
|
| +
|
| + index += """<li><a href="#%s">%s</a>\n""" % (headingname,prevheadingtext)
|
| + skipspace = 1
|
| + continue
|
| + m = h5.match(s)
|
| + if m:
|
| + prevheadingtext = m.group(2)
|
| + nameindex += 1
|
| + subsubsubsection += 1
|
| + headingname = getheadingname(m)
|
| + result.append("""<H5><a name="%s"></a>%d.%d.%d.%d %s</H5>""" % (headingname,section, subsection, subsubsection, subsubsubsection, prevheadingtext))
|
| +
|
| + if subsubsubsection == 1:
|
| + index += "<ul>\n"
|
| +
|
| + index += """<li><a href="#%s">%s</a>\n""" % (headingname,prevheadingtext)
|
| + skipspace = 1
|
| + continue
|
| +
|
| + result.append(s)
|
| +
|
| +if subsubsubsection:
|
| + index += "</ul>\n"
|
| +
|
| +if subsubsection:
|
| + index += "</ul>\n"
|
| +
|
| +if subsection:
|
| + index += "</ul>\n"
|
| +
|
| +if section:
|
| + index += "</ul>\n"
|
| +
|
| +index += "</div>\n<!-- INDEX -->\n"
|
| +
|
| +data = "\n".join(result)
|
| +
|
| +data = data.replace("@INDEX@",index) + "\n";
|
| +
|
| +# Write the file back out
|
| +open(filename,"w").write(data)
|
| +
|
| +
|
|
|
| Property changes on: tools/nixysa/third_party/ply-3.1/doc/makedoc.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|