diff options
Diffstat (limited to 'doc/tools/makehtml.py')
-rw-r--r-- | doc/tools/makehtml.py | 1179 |
1 files changed, 574 insertions, 605 deletions
diff --git a/doc/tools/makehtml.py b/doc/tools/makehtml.py index b0a8cbda88..3ecb8220cb 100644 --- a/doc/tools/makehtml.py +++ b/doc/tools/makehtml.py @@ -6,676 +6,647 @@ import xml.etree.ElementTree as ET from xml.sax.saxutils import escape, unescape html_escape_table = { - '"': """, - "'": "'" + '"': """, + "'": "'" } -html_unescape_table = {v:k for k, v in html_escape_table.items()} +html_unescape_table = {v: k for k, v in html_escape_table.items()} + def html_escape(text): - return escape(text, html_escape_table) + return escape(text, html_escape_table) + def html_unescape(text): - return unescape(text, html_unescape_table) + return unescape(text, html_unescape_table) input_list = [] -single_page=True +single_page = True for arg in sys.argv[1:]: - if arg[:1] == "-": - if arg[1:] == "multipage": - single_page = False - if arg[1:] == "singlepage": - single_page = True - else: - input_list.append(arg) + if arg[:1] == "-": + if arg[1:] == "multipage": + single_page = False + if arg[1:] == "singlepage": + single_page = True + else: + input_list.append(arg) if len(input_list) < 1: - print("usage: makehtml.py <classes.xml>") - sys.exit(0) + print("usage: makehtml.py <classes.xml>") + sys.exit(0) -def validate_tag(elem,tag): - if (elem.tag != tag): - print("Tag mismatch, expected '"+tag+"', got "+elem.tag); - sys.exit(255) +def validate_tag(elem, tag): + if (elem.tag != tag): + print("Tag mismatch, expected '" + tag + "', got " + elem.tag) + sys.exit(255) -def make_html_bottom(body): - #make_html_top(body,True) - ET.SubElement(body,"hr") - copyright = ET.SubElement(body,"span") - copyright.text = "Copyright 2008-2010 Codenix SRL" - -def make_html_top(body,bottom=False): - - if (bottom): - ET.SubElement(body,"hr") - - table = ET.SubElement(body,"table") - table.attrib["class"]="top_table" - tr = ET.SubElement(table,"tr") - td = ET.SubElement(tr,"td") - td.attrib["class"]="top_table" - - img = ET.SubElement(td,"image") - img.attrib["src"]="images/logo.png" - td = ET.SubElement(tr,"td") - td.attrib["class"]="top_table" - a = ET.SubElement(td,"a") - a.attrib["href"]="index.html" - a.text="Index" - td = ET.SubElement(tr,"td") - td.attrib["class"]="top_table" - a = ET.SubElement(td,"a") - a.attrib["href"]="alphabetical.html" - a.text="Classes" - td = ET.SubElement(tr,"td") - td.attrib["class"]="top_table" - a = ET.SubElement(td,"a") - a.attrib["href"]="category.html" - a.text="Categories" - td = ET.SubElement(tr,"td") - a = ET.SubElement(td,"a") - a.attrib["href"]="inheritance.html" - a.text="Inheritance" - if (not bottom): - ET.SubElement(body,"hr") - - - - -def make_html_class_list(class_list,columns): - - div=ET.Element("div") - div.attrib["class"]="ClassList"; - - h1=ET.SubElement(div,"h2") - h1.text="Alphabetical Class List" - - table=ET.SubElement(div,"table") - table.attrib["class"]="class_table" - table.attrib["width"]="100%" - prev=0 - - col_max = len(class_list) / columns + 1 - print("col max is ", col_max) - col_count = 0 - row_count = 0 - last_initial = "" - fit_columns=[] - - for n in range(0,columns): - fit_columns+=[[]] - - indexers=[] - last_initial="" - - idx=0 - for n in class_list: - col = int(idx/col_max) - if (col>=columns): - col=columns-1 - fit_columns[col]+=[n] - idx+=1 - if (n[:1]!=last_initial): - indexers+=[n] - last_initial=n[:1] - - row_max=0 - - for n in range(0,columns): - if (len(fit_columns[n])>row_max): - row_max=len(fit_columns[n]) - - - for r in range(0,row_max): - tr = ET.SubElement(table,"tr") - for c in range(0,columns): - tdi = ET.SubElement(tr,"td") - tdi.attrib["align"]="right" - td = ET.SubElement(tr,"td") - if (r>=len(fit_columns[c])): - continue - - classname = fit_columns[c][r] - print(classname) - if (classname in indexers): - - span = ET.SubElement(tdi, "span") - span.attrib["class"] = "class_index_letter" - span.text = classname[:1].upper() - if (single_page): - link="#"+classname +def make_html_bottom(body): + # make_html_top(body,True) + ET.SubElement(body, "hr") + copyright = ET.SubElement(body, "span") + copyright.text = "Copyright 2008-2010 Codenix SRL" + + +def make_html_top(body, bottom=False): + + if (bottom): + ET.SubElement(body, "hr") + + table = ET.SubElement(body, "table") + table.attrib["class"] = "top_table" + tr = ET.SubElement(table, "tr") + td = ET.SubElement(tr, "td") + td.attrib["class"] = "top_table" + + img = ET.SubElement(td, "image") + img.attrib["src"] = "images/logo.png" + td = ET.SubElement(tr, "td") + td.attrib["class"] = "top_table" + a = ET.SubElement(td, "a") + a.attrib["href"] = "index.html" + a.text = "Index" + td = ET.SubElement(tr, "td") + td.attrib["class"] = "top_table" + a = ET.SubElement(td, "a") + a.attrib["href"] = "alphabetical.html" + a.text = "Classes" + td = ET.SubElement(tr, "td") + td.attrib["class"] = "top_table" + a = ET.SubElement(td, "a") + a.attrib["href"] = "category.html" + a.text = "Categories" + td = ET.SubElement(tr, "td") + a = ET.SubElement(td, "a") + a.attrib["href"] = "inheritance.html" + a.text = "Inheritance" + if (not bottom): + ET.SubElement(body, "hr") + + +def make_html_class_list(class_list, columns): + + div = ET.Element("div") + div.attrib["class"] = "ClassList" + + h1 = ET.SubElement(div, "h2") + h1.text = "Alphabetical Class List" + + table = ET.SubElement(div, "table") + table.attrib["class"] = "class_table" + table.attrib["width"] = "100%" + prev = 0 + + col_max = len(class_list) / columns + 1 + print("col max is ", col_max) + col_count = 0 + row_count = 0 + last_initial = "" + fit_columns = [] + + for n in range(0, columns): + fit_columns += [[]] + + indexers = [] + last_initial = "" + + idx = 0 + for n in class_list: + col = int(idx / col_max) + if (col >= columns): + col = columns - 1 + fit_columns[col] += [n] + idx += 1 + if (n[:1] != last_initial): + indexers += [n] + last_initial = n[:1] + + row_max = 0 + + for n in range(0, columns): + if (len(fit_columns[n]) > row_max): + row_max = len(fit_columns[n]) + + for r in range(0, row_max): + tr = ET.SubElement(table, "tr") + for c in range(0, columns): + tdi = ET.SubElement(tr, "td") + tdi.attrib["align"] = "right" + td = ET.SubElement(tr, "td") + if (r >= len(fit_columns[c])): + continue + + classname = fit_columns[c][r] + print(classname) + if (classname in indexers): + + span = ET.SubElement(tdi, "span") + span.attrib["class"] = "class_index_letter" + span.text = classname[:1].upper() + + if (single_page): + link = "#" + classname + else: + link = classname + ".html" + + a = ET.SubElement(td, "a") + a.attrib["href"] = link + a.text = classname + + if (not single_page): + cat_class_list = ET.Element("html") + csscc = ET.SubElement(cat_class_list, "link") + csscc.attrib["href"] = "main.css" + csscc.attrib["rel"] = "stylesheet" + csscc.attrib["type"] = "text/css" + bodycc = ET.SubElement(cat_class_list, "body") + make_html_top(bodycc) + + cat_class_parent = bodycc else: - link=classname+".html" - - a=ET.SubElement(td,"a") - a.attrib["href"]=link - a.text=classname - - - if (not single_page): - cat_class_list=ET.Element("html") - csscc = ET.SubElement(cat_class_list, "link") - csscc.attrib["href"] = "main.css" - csscc.attrib["rel"] = "stylesheet" - csscc.attrib["type"] = "text/css" - bodycc = ET.SubElement(cat_class_list, "body") - make_html_top(bodycc) - - cat_class_parent=bodycc - else: - cat_class_parent=div - - - - - h1=ET.SubElement(cat_class_parent,"h2") - h1.text="Class List By Category" - - class_cat_table={} - class_cat_list=[] - - for c in class_list: - clss = classes[c] - if ("category" in clss.attrib): - class_cat=clss.attrib["category"] - else: - class_cat="Core" - if (class_cat.find("/")!=-1): - class_cat=class_cat[class_cat.rfind("/")+1:] - if (not class_cat in class_cat_list): - class_cat_list.append(class_cat) - class_cat_table[class_cat]=[] - class_cat_table[class_cat].append(c) - - class_cat_list.sort() - - ct = ET.SubElement(cat_class_parent,"table") - for cl in class_cat_list: - l = class_cat_table[cl] - l.sort() - tr = ET.SubElement(ct,"tr") - tr.attrib["class"]="category_title" - td = ET.SubElement(ct,"td") - td.attrib["class"]="category_title" - - a = ET.SubElement(td,"a") - a.attrib["class"]="category_title" - a.text=cl - a.attrib["name"]="CATEGORY_"+cl - - td = ET.SubElement(ct,"td") - td.attrib["class"]="category_title" - - for clt in l: - tr = ET.SubElement(ct,"tr") - td = ET.SubElement(ct,"td") - make_type(clt,td) - clss=classes[clt] - bd = clss.find("brief_description") - bdtext="" - if (bd!=None): - bdtext=bd.text - td = ET.SubElement(ct,"td") - td.text=bdtext - - if (not single_page): - make_html_bottom(bodycc) - catet_out = ET.ElementTree(cat_class_list) - catet_out.write("category.html") - - - if (not single_page): - inh_class_list=ET.Element("html") - cssic = ET.SubElement(inh_class_list, "link") - cssic.attrib["href"] = "main.css" - cssic.attrib["rel"] = "stylesheet" - cssic.attrib["type"] = "text/css" - bodyic = ET.SubElement(inh_class_list, "body") - make_html_top(bodyic) - inh_class_parent=bodyic - else: - inh_class_parent=div - - - - - h1=ET.SubElement(inh_class_parent,"h2") - h1.text="Class List By Inheritance" - - itemlist = ET.SubElement(inh_class_parent,"list") - - class_inh_table={} - - def add_class(clss): - if (clss.attrib["name"] in class_inh_table): - return #already added - parent_list=None - - if ("inherits" in clss.attrib): - inhc = clss.attrib["inherits"] - if (not (inhc in class_inh_table)): - add_class(classes[inhc]) - - parent_list = class_inh_table[inhc].find("div") - if (parent_list == None): - parent_div = ET.SubElement(class_inh_table[inhc],"div") - parent_list = ET.SubElement(parent_div,"list") - parent_div.attrib["class"]="inh_class_list" + cat_class_parent = div + + h1 = ET.SubElement(cat_class_parent, "h2") + h1.text = "Class List By Category" + + class_cat_table = {} + class_cat_list = [] + + for c in class_list: + clss = classes[c] + if ("category" in clss.attrib): + class_cat = clss.attrib["category"] + else: + class_cat = "Core" + if (class_cat.find("/") != -1): + class_cat = class_cat[class_cat.rfind("/") + 1:] + if (not class_cat in class_cat_list): + class_cat_list.append(class_cat) + class_cat_table[class_cat] = [] + class_cat_table[class_cat].append(c) + + class_cat_list.sort() + + ct = ET.SubElement(cat_class_parent, "table") + for cl in class_cat_list: + l = class_cat_table[cl] + l.sort() + tr = ET.SubElement(ct, "tr") + tr.attrib["class"] = "category_title" + td = ET.SubElement(ct, "td") + td.attrib["class"] = "category_title" + + a = ET.SubElement(td, "a") + a.attrib["class"] = "category_title" + a.text = cl + a.attrib["name"] = "CATEGORY_" + cl + + td = ET.SubElement(ct, "td") + td.attrib["class"] = "category_title" + + for clt in l: + tr = ET.SubElement(ct, "tr") + td = ET.SubElement(ct, "td") + make_type(clt, td) + clss = classes[clt] + bd = clss.find("brief_description") + bdtext = "" + if (bd != None): + bdtext = bd.text + td = ET.SubElement(ct, "td") + td.text = bdtext + + if (not single_page): + make_html_bottom(bodycc) + catet_out = ET.ElementTree(cat_class_list) + catet_out.write("category.html") + + if (not single_page): + inh_class_list = ET.Element("html") + cssic = ET.SubElement(inh_class_list, "link") + cssic.attrib["href"] = "main.css" + cssic.attrib["rel"] = "stylesheet" + cssic.attrib["type"] = "text/css" + bodyic = ET.SubElement(inh_class_list, "body") + make_html_top(bodyic) + inh_class_parent = bodyic else: - parent_list = parent_list.find("list") + inh_class_parent = div + h1 = ET.SubElement(inh_class_parent, "h2") + h1.text = "Class List By Inheritance" - else: - parent_list=itemlist - - item = ET.SubElement(parent_list,"li") -# item.attrib["class"]="inh_class_list" - class_inh_table[clss.attrib["name"]]=item - make_type(clss.attrib["name"],item) - - - for c in class_list: - add_class(classes[c]) - - if (not single_page): - make_html_bottom(bodyic) - catet_out = ET.ElementTree(inh_class_list) - catet_out.write("inheritance.html") + itemlist = ET.SubElement(inh_class_parent, "list") + class_inh_table = {} + def add_class(clss): + if (clss.attrib["name"] in class_inh_table): + return # already added + parent_list = None + if ("inherits" in clss.attrib): + inhc = clss.attrib["inherits"] + if (not (inhc in class_inh_table)): + add_class(classes[inhc]) + parent_list = class_inh_table[inhc].find("div") + if (parent_list == None): + parent_div = ET.SubElement(class_inh_table[inhc], "div") + parent_list = ET.SubElement(parent_div, "list") + parent_div.attrib["class"] = "inh_class_list" + else: + parent_list = parent_list.find("list") - #h1=ET.SubElement(div,"h2") - #h1.text="Class List By Inheritance" + else: + parent_list = itemlist - return div - - -def make_type(p_type,p_parent): - if (p_type=="RefPtr"): - p_type="Resource" - - if (p_type in class_names): - a=ET.SubElement(p_parent,"a") - a.attrib["class"]="datatype_existing" - a.text=p_type+" " - if (single_page): - a.attrib["href"]="#"+p_type - else: - a.attrib["href"]=p_type+".html" - else: - span=ET.SubElement(p_parent,"span") - span.attrib["class"]="datatype" - span.text=p_type+" " + item = ET.SubElement(parent_list, "li") +# item.attrib["class"]="inh_class_list" + class_inh_table[clss.attrib["name"]] = item + make_type(clss.attrib["name"], item) + for c in class_list: + add_class(classes[c]) + if (not single_page): + make_html_bottom(bodyic) + catet_out = ET.ElementTree(inh_class_list) + catet_out.write("inheritance.html") -def make_text_def(class_name,parent,text): - text = html_escape(text) - pos=0 - while(True): - pos = text.find("[",pos) - if (pos==-1): - break + # h1=ET.SubElement(div,"h2") + #h1.text="Class List By Inheritance" - endq_pos=text.find("]",pos+1) - if (endq_pos==-1): - break + return div - pre_text=text[:pos] - post_text=text[endq_pos+1:] - tag_text=text[pos+1:endq_pos] - if (tag_text in class_names): - if (single_page): - tag_text='<a href="#'+tag_text+'">'+tag_text+'</a>' - else: - tag_text='<a href="'+tag_text+'.html">'+tag_text+'</a>' - else: #command - cmd=tag_text - space_pos=tag_text.find(" ") - if (cmd.find("html")==0): - cmd=tag_text[:space_pos] - param=tag_text[space_pos+1:] - tag_text="<"+param+">" - elif(cmd.find("method")==0): - cmd=tag_text[:space_pos] - param=tag_text[space_pos+1:] +def make_type(p_type, p_parent): + if (p_type == "RefPtr"): + p_type = "Resource" - if (not single_page and param.find(".")!=-1): - class_param,method_param=param.split(".") - tag_text=tag_text='<a href="'+class_param+'.html#'+class_param+"_"+method_param+'">'+class_param+'.'+method_param+'()</a>' + if (p_type in class_names): + a = ET.SubElement(p_parent, "a") + a.attrib["class"] = "datatype_existing" + a.text = p_type + " " + if (single_page): + a.attrib["href"] = "#" + p_type + else: + a.attrib["href"] = p_type + ".html" else: - tag_text=tag_text='<a href="#'+class_name+"_"+param+'">'+class_name+'.'+param+'()</a>' - elif (cmd.find("image=")==0): - print("found image: "+cmd) - tag_text="<img src="+cmd[6:]+"/>" - elif (cmd.find("url=")==0): - tag_text="<a href="+cmd[4:]+">" - elif (cmd=="/url"): - tag_text="</a>" - elif (cmd=="center"): - tag_text="<div align=\"center\">" - elif (cmd=="/center"): - tag_text="</div>" - elif (cmd=="br"): - tag_text="<br/>" - elif (cmd=="i" or cmd=="/i" or cmd=="b" or cmd=="/b" or cmd=="u" or cmd=="/u"): - tag_text="<"+tag_text+">" #html direct mapping - else: - tag_text="["+tag_text+"]" - - - text=pre_text+tag_text+post_text - pos=len(pre_text)+len(tag_text) - - #tnode = ET.SubElement(parent,"div") - #tnode.text=text - text="<div class=\"description\">"+text+"</div>" - try: - tnode=ET.XML(text) - parent.append(tnode) - except: - print("Error parsing description text: '"+text+"'") - sys.exit(255) - - - return tnode - - - - -def make_method_def(name,m,declare,event=False): - - mdata={} - - - if (not declare): - div=ET.Element("tr") - div.attrib["class"]="method" - ret_parent=ET.SubElement(div,"td") - ret_parent.attrib["align"]="right" - func_parent=ET.SubElement(div,"td") - else: - div=ET.Element("div") - div.attrib["class"]="method" - ret_parent=div - func_parent=div - - mdata["argidx"]=[] - mdata["name"]=m.attrib["name"] - qualifiers="" - if ("qualifiers" in m.attrib): - qualifiers=m.attrib["qualifiers"] - - args=list(m) - for a in args: - if (a.tag=="return"): - idx=-1 - elif (a.tag=="argument"): - idx=int(a.attrib["index"]) - else: - continue - - mdata["argidx"].append(idx) - mdata[idx]=a - - if (not event): - if (-1 in mdata["argidx"]): - make_type(mdata[-1].attrib["type"],ret_parent) - mdata["argidx"].remove(-1) - else: - make_type("void",ret_parent) - - span=ET.SubElement(func_parent,"span") - if (declare): - span.attrib["class"]="funcdecl" - a=ET.SubElement(span,"a") - a.attrib["name"]=name+"_"+m.attrib["name"] - a.text=name+"::"+m.attrib["name"] - else: - span.attrib["class"]="identifier funcdef" - a=ET.SubElement(span,"a") - a.attrib["href"]="#"+name+"_"+m.attrib["name"] - a.text=m.attrib["name"] - - span=ET.SubElement(func_parent,"span") - span.attrib["class"]="symbol" - span.text=" (" - - for a in mdata["argidx"]: - arg=mdata[a] - if (a>0): - span=ET.SubElement(func_parent,"span") - span.text=", " - else: - span=ET.SubElement(func_parent,"span") - span.text=" " - - - make_type(arg.attrib["type"],func_parent) - - span=ET.SubElement(func_parent,"span") - span.text=arg.attrib["name"] - if ("default" in arg.attrib): - span.text=span.text+"="+arg.attrib["default"] - - - span=ET.SubElement(func_parent,"span") - span.attrib["class"]="symbol" - if (len(mdata["argidx"])): - span.text=" )" - else: - span.text=")" - - if (qualifiers): - span=ET.SubElement(func_parent,"span") - span.attrib["class"]="qualifier" - span.text=" "+qualifiers - - return div - - -def make_html_class(node): - - div=ET.Element("div") - div.attrib["class"]="class"; - - a=ET.SubElement(div,"a") - a.attrib["name"]=node.attrib["name"] + span = ET.SubElement(p_parent, "span") + span.attrib["class"] = "datatype" + span.text = p_type + " " + + +def make_text_def(class_name, parent, text): + text = html_escape(text) + pos = 0 + while(True): + pos = text.find("[", pos) + if (pos == -1): + break + + endq_pos = text.find("]", pos + 1) + if (endq_pos == -1): + break + + pre_text = text[:pos] + post_text = text[endq_pos + 1:] + tag_text = text[pos + 1:endq_pos] + + if (tag_text in class_names): + if (single_page): + tag_text = '<a href="#' + tag_text + '">' + tag_text + '</a>' + else: + tag_text = '<a href="' + tag_text + '.html">' + tag_text + '</a>' + else: # command + cmd = tag_text + space_pos = tag_text.find(" ") + if (cmd.find("html") == 0): + cmd = tag_text[:space_pos] + param = tag_text[space_pos + 1:] + tag_text = "<" + param + ">" + elif(cmd.find("method") == 0): + cmd = tag_text[:space_pos] + param = tag_text[space_pos + 1:] + + if (not single_page and param.find(".") != -1): + class_param, method_param = param.split(".") + tag_text = tag_text = '<a href="' + class_param + '.html#' + class_param + "_" + method_param + '">' + class_param + '.' + method_param + '()</a>' + else: + tag_text = tag_text = '<a href="#' + class_name + "_" + param + '">' + class_name + '.' + param + '()</a>' + elif (cmd.find("image=") == 0): + print("found image: " + cmd) + tag_text = "<img src=" + cmd[6:] + "/>" + elif (cmd.find("url=") == 0): + tag_text = "<a href=" + cmd[4:] + ">" + elif (cmd == "/url"): + tag_text = "</a>" + elif (cmd == "center"): + tag_text = "<div align=\"center\">" + elif (cmd == "/center"): + tag_text = "</div>" + elif (cmd == "br"): + tag_text = "<br/>" + elif (cmd == "i" or cmd == "/i" or cmd == "b" or cmd == "/b" or cmd == "u" or cmd == "/u"): + tag_text = "<" + tag_text + ">" # html direct mapping + else: + tag_text = "[" + tag_text + "]" + + text = pre_text + tag_text + post_text + pos = len(pre_text) + len(tag_text) + + #tnode = ET.SubElement(parent,"div") + # tnode.text=text + text = "<div class=\"description\">" + text + "</div>" + try: + tnode = ET.XML(text) + parent.append(tnode) + except: + print("Error parsing description text: '" + text + "'") + sys.exit(255) + + return tnode + + +def make_method_def(name, m, declare, event=False): + + mdata = {} + + if (not declare): + div = ET.Element("tr") + div.attrib["class"] = "method" + ret_parent = ET.SubElement(div, "td") + ret_parent.attrib["align"] = "right" + func_parent = ET.SubElement(div, "td") + else: + div = ET.Element("div") + div.attrib["class"] = "method" + ret_parent = div + func_parent = div + + mdata["argidx"] = [] + mdata["name"] = m.attrib["name"] + qualifiers = "" + if ("qualifiers" in m.attrib): + qualifiers = m.attrib["qualifiers"] + + args = list(m) + for a in args: + if (a.tag == "return"): + idx = -1 + elif (a.tag == "argument"): + idx = int(a.attrib["index"]) + else: + continue + + mdata["argidx"].append(idx) + mdata[idx] = a + + if (not event): + if (-1 in mdata["argidx"]): + make_type(mdata[-1].attrib["type"], ret_parent) + mdata["argidx"].remove(-1) + else: + make_type("void", ret_parent) + + span = ET.SubElement(func_parent, "span") + if (declare): + span.attrib["class"] = "funcdecl" + a = ET.SubElement(span, "a") + a.attrib["name"] = name + "_" + m.attrib["name"] + a.text = name + "::" + m.attrib["name"] + else: + span.attrib["class"] = "identifier funcdef" + a = ET.SubElement(span, "a") + a.attrib["href"] = "#" + name + "_" + m.attrib["name"] + a.text = m.attrib["name"] + + span = ET.SubElement(func_parent, "span") + span.attrib["class"] = "symbol" + span.text = " (" + + for a in mdata["argidx"]: + arg = mdata[a] + if (a > 0): + span = ET.SubElement(func_parent, "span") + span.text = ", " + else: + span = ET.SubElement(func_parent, "span") + span.text = " " + + make_type(arg.attrib["type"], func_parent) + + span = ET.SubElement(func_parent, "span") + span.text = arg.attrib["name"] + if ("default" in arg.attrib): + span.text = span.text + "=" + arg.attrib["default"] + + span = ET.SubElement(func_parent, "span") + span.attrib["class"] = "symbol" + if (len(mdata["argidx"])): + span.text = " )" + else: + span.text = ")" - h3=ET.SubElement(a,"h3") - h3.attrib["class"]="title class_title" - h3.text=node.attrib["name"] + if (qualifiers): + span = ET.SubElement(func_parent, "span") + span.attrib["class"] = "qualifier" + span.text = " " + qualifiers - briefd = node.find("brief_description") - if (briefd!=None): - div2=ET.SubElement(div,"div") - div2.attrib["class"]="description class_description" - div2.text=briefd.text + return div - if ("inherits" in node.attrib): - ET.SubElement(div,"br") - div2=ET.SubElement(div,"div") - div2.attrib["class"]="inheritance"; +def make_html_class(node): - span=ET.SubElement(div2,"span") - span.text="Inherits: " + div = ET.Element("div") + div.attrib["class"] = "class" - make_type(node.attrib["inherits"],div2) + a = ET.SubElement(div, "a") + a.attrib["name"] = node.attrib["name"] - if ("category" in node.attrib): - ET.SubElement(div,"br") + h3 = ET.SubElement(a, "h3") + h3.attrib["class"] = "title class_title" + h3.text = node.attrib["name"] - div3=ET.SubElement(div,"div") - div3.attrib["class"]="category"; + briefd = node.find("brief_description") + if (briefd != None): + div2 = ET.SubElement(div, "div") + div2.attrib["class"] = "description class_description" + div2.text = briefd.text - span=ET.SubElement(div3,"span") - span.attrib["class"]="category" - span.text="Category: " + if ("inherits" in node.attrib): + ET.SubElement(div, "br") - a = ET.SubElement(div3,"a") - a.attrib["class"]="category_ref" - a.text=node.attrib["category"] - catname=a.text - if (catname.rfind("/")!=-1): - catname=catname[catname.rfind("/"):] - catname="CATEGORY_"+catname + div2 = ET.SubElement(div, "div") + div2.attrib["class"] = "inheritance" - if (single_page): - a.attrib["href"]="#"+catname - else: - a.attrib["href"]="category.html#"+catname + span = ET.SubElement(div2, "span") + span.text = "Inherits: " + make_type(node.attrib["inherits"], div2) - methods = node.find("methods") + if ("category" in node.attrib): + ET.SubElement(div, "br") - if(methods!=None and len(list(methods))>0): + div3 = ET.SubElement(div, "div") + div3.attrib["class"] = "category" - h4=ET.SubElement(div,"h4") - h4.text="Public Methods:" + span = ET.SubElement(div3, "span") + span.attrib["class"] = "category" + span.text = "Category: " - method_table=ET.SubElement(div,"table") - method_table.attrib["class"]="method_list"; + a = ET.SubElement(div3, "a") + a.attrib["class"] = "category_ref" + a.text = node.attrib["category"] + catname = a.text + if (catname.rfind("/") != -1): + catname = catname[catname.rfind("/"):] + catname = "CATEGORY_" + catname - for m in list(methods): -# li = ET.SubElement(div2, "li") - method_table.append( make_method_def(node.attrib["name"],m,False) ) + if (single_page): + a.attrib["href"] = "#" + catname + else: + a.attrib["href"] = "category.html#" + catname - events = node.find("signals") + methods = node.find("methods") - if(events!=None and len(list(events))>0): - h4=ET.SubElement(div,"h4") - h4.text="Events:" + if(methods != None and len(list(methods)) > 0): - event_table=ET.SubElement(div,"table") - event_table.attrib["class"]="method_list"; + h4 = ET.SubElement(div, "h4") + h4.text = "Public Methods:" - for m in list(events): -# li = ET.SubElement(div2, "li") - event_table.append( make_method_def(node.attrib["name"],m,False,True) ) + method_table = ET.SubElement(div, "table") + method_table.attrib["class"] = "method_list" + for m in list(methods): + #li = ET.SubElement(div2, "li") + method_table.append(make_method_def(node.attrib["name"], m, False)) - members = node.find("members") - if(members!=None and len(list(members))>0): + events = node.find("signals") - h4=ET.SubElement(div,"h4") - h4.text="Public Variables:" - div2=ET.SubElement(div,"div") - div2.attrib["class"]="member_list"; + if(events != None and len(list(events)) > 0): + h4 = ET.SubElement(div, "h4") + h4.text = "Events:" - for c in list(members): + event_table = ET.SubElement(div, "table") + event_table.attrib["class"] = "method_list" - li = ET.SubElement(div2, "li") - div3=ET.SubElement(li,"div") - div3.attrib["class"]="member"; - make_type(c.attrib["type"],div3) - span=ET.SubElement(div3,"span") - span.attrib["class"]="identifier member_name" - span.text=" "+c.attrib["name"]+" " - span=ET.SubElement(div3,"span") - span.attrib["class"]="member_description" - span.text=c.text + for m in list(events): + #li = ET.SubElement(div2, "li") + event_table.append(make_method_def(node.attrib["name"], m, False, True)) + members = node.find("members") + if(members != None and len(list(members)) > 0): - constants = node.find("constants") - if(constants!=None and len(list(constants))>0): + h4 = ET.SubElement(div, "h4") + h4.text = "Public Variables:" + div2 = ET.SubElement(div, "div") + div2.attrib["class"] = "member_list" - h4=ET.SubElement(div,"h4") - h4.text="Constants:" - div2=ET.SubElement(div,"div") - div2.attrib["class"]="constant_list"; + for c in list(members): - for c in list(constants): - li = ET.SubElement(div2, "li") - div3=ET.SubElement(li,"div") - div3.attrib["class"]="constant"; + li = ET.SubElement(div2, "li") + div3 = ET.SubElement(li, "div") + div3.attrib["class"] = "member" + make_type(c.attrib["type"], div3) + span = ET.SubElement(div3, "span") + span.attrib["class"] = "identifier member_name" + span.text = " " + c.attrib["name"] + " " + span = ET.SubElement(div3, "span") + span.attrib["class"] = "member_description" + span.text = c.text - span=ET.SubElement(div3,"span") - span.attrib["class"]="identifier constant_name" - span.text=c.attrib["name"]+" " - if ("value" in c.attrib): - span=ET.SubElement(div3,"span") - span.attrib["class"]="symbol" - span.text="= " - span=ET.SubElement(div3,"span") - span.attrib["class"]="constant_value" - span.text=c.attrib["value"]+" " - span=ET.SubElement(div3,"span") - span.attrib["class"]="constant_description" - span.text=c.text + constants = node.find("constants") + if(constants != None and len(list(constants)) > 0): + + h4 = ET.SubElement(div, "h4") + h4.text = "Constants:" + div2 = ET.SubElement(div, "div") + div2.attrib["class"] = "constant_list" + + for c in list(constants): + li = ET.SubElement(div2, "li") + div3 = ET.SubElement(li, "div") + div3.attrib["class"] = "constant" + + span = ET.SubElement(div3, "span") + span.attrib["class"] = "identifier constant_name" + span.text = c.attrib["name"] + " " + if ("value" in c.attrib): + span = ET.SubElement(div3, "span") + span.attrib["class"] = "symbol" + span.text = "= " + span = ET.SubElement(div3, "span") + span.attrib["class"] = "constant_value" + span.text = c.attrib["value"] + " " + span = ET.SubElement(div3, "span") + span.attrib["class"] = "constant_description" + span.text = c.text # ET.SubElement(div,"br") + descr = node.find("description") + if (descr != None and descr.text.strip() != ""): + h4 = ET.SubElement(div, "h4") + h4.text = "Description:" - descr=node.find("description") - if (descr!=None and descr.text.strip()!=""): - h4=ET.SubElement(div,"h4") - h4.text="Description:" - - make_text_def(node.attrib["name"],div,descr.text) + make_text_def(node.attrib["name"], div, descr.text) # div2=ET.SubElement(div,"div") # div2.attrib["class"]="description"; # div2.text=descr.text + if(methods != None or events != None): + h4 = ET.SubElement(div, "h4") + h4.text = "Method Documentation:" + iter_list = [] + if (methods != None): + iter_list += list(methods) + if (events != None): + iter_list += list(events) - if(methods!=None or events!=None): - - h4=ET.SubElement(div,"h4") - h4.text="Method Documentation:" - iter_list = [] - if (methods!=None): - iter_list+=list(methods) - if (events!=None): - iter_list+=list(events) - - for m in iter_list: - - descr=m.find("description") - - if (descr==None or descr.text.strip()==""): - continue; + for m in iter_list: - div2=ET.SubElement(div,"div") - div2.attrib["class"]="method_doc"; + descr = m.find("description") + if (descr == None or descr.text.strip() == ""): + continue - div2.append( make_method_def(node.attrib["name"],m,True) ) - #anchor = ET.SubElement(div2, "a") - #anchor.attrib["name"] = - make_text_def(node.attrib["name"],div2,descr.text) - #div3=ET.SubElement(div2,"div") - #div3.attrib["class"]="description"; - #div3.text=descr.text + div2 = ET.SubElement(div, "div") + div2.attrib["class"] = "method_doc" + div2.append(make_method_def(node.attrib["name"], m, True)) + #anchor = ET.SubElement(div2, "a") + # anchor.attrib["name"] = + make_text_def(node.attrib["name"], div2, descr.text) + # div3=ET.SubElement(div2,"div") + # div3.attrib["class"]="description"; + # div3.text=descr.text - return div + return div -class_names=[] -classes={} +class_names = [] +classes = {} for file in input_list: - tree = ET.parse(file) - doc=tree.getroot() + tree = ET.parse(file) + doc = tree.getroot() - if ("version" not in doc.attrib): - print("Version missing from 'doc'") - sys.exit(255) + if ("version" not in doc.attrib): + print("Version missing from 'doc'") + sys.exit(255) - version=doc.attrib["version"] + version = doc.attrib["version"] - for c in list(doc): - if (c.attrib["name"] in class_names): - continue - class_names.append(c.attrib["name"]) - classes[c.attrib["name"]]=c + for c in list(doc): + if (c.attrib["name"] in class_names): + continue + class_names.append(c.attrib["name"]) + classes[c.attrib["name"]] = c html = ET.Element("html") css = ET.SubElement(html, "link") @@ -685,36 +656,34 @@ css.attrib["type"] = "text/css" body = ET.SubElement(html, "body") if (not single_page): - make_html_top(body) - + make_html_top(body) class_names.sort() -body.append( make_html_class_list(class_names,5) ) +body.append(make_html_class_list(class_names, 5)) for cn in class_names: - c=classes[cn] - if (single_page): - body.append( make_html_class(c)) - else: - html2 = ET.Element("html") - css = ET.SubElement(html2, "link") - css.attrib["href"] = "main.css" - css.attrib["rel"] = "stylesheet" - css.attrib["type"] = "text/css" - body2 = ET.SubElement(html2, "body" ) - make_html_top(body2) - body2.append( make_html_class(c) ); - make_html_bottom(body2) - et_out = ET.ElementTree(html2) - et_out.write(c.attrib["name"]+".html") + c = classes[cn] + if (single_page): + body.append(make_html_class(c)) + else: + html2 = ET.Element("html") + css = ET.SubElement(html2, "link") + css.attrib["href"] = "main.css" + css.attrib["rel"] = "stylesheet" + css.attrib["type"] = "text/css" + body2 = ET.SubElement(html2, "body") + make_html_top(body2) + body2.append(make_html_class(c)) + make_html_bottom(body2) + et_out = ET.ElementTree(html2) + et_out.write(c.attrib["name"] + ".html") et_out = ET.ElementTree(html) if (single_page): - et_out.write("singlepage.html") + et_out.write("singlepage.html") else: - make_html_bottom(body) - et_out.write("alphabetical.html") - + make_html_bottom(body) + et_out.write("alphabetical.html") |