def _src_to_xml(text):
return text.replace("&", "&").replace("<", "<").replace(">", ">")
+def _email_to_xml(text):
+ return text & Match("<([^<>]*@[^<>]*)>") >> "<\\1>"
class PerFileEntry:
def __init__(self, header, comment):
if entry:
comment = entry.filecomment.xml_text()
if comment:
- check = Match(r"(?s)<para>\s*[Aa]uthors*\b:*((?:.(?!</para>))*.)</para>")
- if comment & check: return _src_to_xml(check[1])
+ check = Match(r"(?s)<para>\s*[Aa]uthors*\b:*"
+ r"((?:.(?!</para>))*.)</para>")
+ if comment & check: return _email_to_xml(check[1])
return None
def get_copyright(self):
comment = None
if entry:
comment = entry.filecomment.xml_text()
if comment:
- check = Match(r"(?s)<para>\s*[Cc]opyright\b((?:.(?!</para>))*.)</para>")
- if comment & check: return check[0]
+ check = Match(r"(?s)<para>\s*[Cc]opyright\b"
+ r"((?:.(?!</para>))*.)</para>")
+ if comment & check: return _email_to_xml(check[0])
return None
def makedocs(filenames, o):
& func_adapter.src_mainheader()):
continue
man3.add(func_adapter)
+ man3.add_overview(func_adapter)
man3.cut()
man3.cut()
man3_filename = "zziplib"+o.suffix+".docbook"
from match import Match
from htm2dbk import *
+def _to_word(text):
+ return text & Match("[^\w]+") >> "_"
+
class FunctionListReference:
""" Creating a docbook-style <reference> list of <refentry> parts
that will each be translated into a unix manual page in a second step """
self.o = o
self.pages = []
self.entry = None
+ self.overview = None
def cut(self):
if not self.entry: return
self.pages += [ self.entry ]
for item in entry.list_seealso():
if item not in self.entry.seealso_list:
self.entry.seealso_list += [ item ]
+ def add_overview(self, entry):
+ if self.overview is None:
+ title = entry.get_mainheader() & Match(".*<(.*)>.*") >> "\\1"
+ self.overview = FunctionListRefEntry(entry, self.o)
+ self.overview.funcsynopsisinfo = entry.get_mainheader()
+ self.overview.refpurpose = self.o.package.strip()
+ self.overview.refentrytitle = title
+ self.overview.refname = _to_word(title)
+ description = entry.get_title().strip() & Match("^[.]+") >> ""
+ funcsynopsis = entry.head_xml_text()
+ self.overview.funcsynopsis_list += [ funcsynopsis ]
+ if description:
+ self.overview.description_list += [
+ "<para> - "+ description +"</para>" ]
def xml_text(self):
T = self.doctype
T += "<reference><title>"+self.o.package+" Function List</title>\n"
for item in self.pages:
T += self.sane(item.refentry_text())
+ T += self.sane(self.overview.refentry_text())
T += "</reference>\n"
return T
def sane(self, text):