summaryrefslogtreecommitdiff
path: root/doc/tools/doc_merge.py
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tools/doc_merge.py')
-rw-r--r--doc/tools/doc_merge.py316
1 files changed, 160 insertions, 156 deletions
diff --git a/doc/tools/doc_merge.py b/doc/tools/doc_merge.py
index 536770bee4..57ac4bdcdd 100644
--- a/doc/tools/doc_merge.py
+++ b/doc/tools/doc_merge.py
@@ -6,206 +6,210 @@ import xml.etree.ElementTree as ET
tree = ET.parse(sys.argv[1])
-old_doc=tree.getroot()
+old_doc = tree.getroot()
tree = ET.parse(sys.argv[2])
-new_doc=tree.getroot()
+new_doc = tree.getroot()
-f = file(sys.argv[3],"wb")
-tab=0
+f = file(sys.argv[3], "wb")
+tab = 0
-old_classes={}
+old_classes = {}
+
+
+def write_string(_f, text, newline=True):
+ for t in range(tab):
+ _f.write("\t")
+ _f.write(text)
+ if (newline):
+ _f.write("\n")
-def write_string(_f, text,newline=True):
- for t in range(tab):
- _f.write("\t")
- _f.write(text)
- if (newline):
- _f.write("\n")
def escape(ret):
- ret=ret.replace("&","&");
- ret=ret.replace("<","&gt;");
- ret=ret.replace(">","&lt;");
- ret=ret.replace("'","&apos;");
- ret=ret.replace("\"","&quot;");
- return ret
+ ret = ret.replace("&", "&amp;")
+ ret = ret.replace("<", "&gt;")
+ ret = ret.replace(">", "&lt;")
+ ret = ret.replace("'", "&apos;")
+ ret = ret.replace("\"", "&quot;")
+ return ret
def inc_tab():
- global tab
- tab+=1
+ global tab
+ tab += 1
+
def dec_tab():
- global tab
- tab-=1
-
-write_string(f,'<?xml version="1.0" encoding="UTF-8" ?>')
-write_string(f,'<doc version="'+new_doc.attrib["version"]+'">')
-
-def get_tag(node,name):
- tag=""
- if (name in node.attrib):
- tag=' '+name+'="'+escape(node.attrib[name])+'" '
- return tag
-
-def find_method_descr(old_class,name):
-
- methods = old_class.find("methods")
- if(methods!=None and len(list(methods))>0):
- for m in list(methods):
- if (m.attrib["name"]==name):
- description=m.find("description")
- if (description!=None and description.text.strip()!=""):
- return description.text
-
- return None
-
-def find_signal_descr(old_class,name):
-
- signals = old_class.find("signals")
- if(signals!=None and len(list(signals))>0):
- for m in list(signals):
- if (m.attrib["name"]==name):
- description=m.find("description")
- if (description!=None and description.text.strip()!=""):
- return description.text
-
- return None
-
-def find_constant_descr(old_class,name):
-
- if (old_class==None):
- return None
- constants = old_class.find("constants")
- if(constants!=None and len(list(constants))>0):
- for m in list(constants):
- if (m.attrib["name"]==name):
- if (m.text.strip()!=""):
- return m.text
- return None
+ global tab
+ tab -= 1
+
+write_string(f, '<?xml version="1.0" encoding="UTF-8" ?>')
+write_string(f, '<doc version="' + new_doc.attrib["version"] + '">')
-def write_class(c):
- class_name = c.attrib["name"]
- print("Parsing Class: "+class_name)
- if (class_name in old_classes):
- old_class=old_classes[class_name]
- else:
- old_class=None
+def get_tag(node, name):
+ tag = ""
+ if (name in node.attrib):
+ tag = ' ' + name + '="' + escape(node.attrib[name]) + '" '
+ return tag
- category=get_tag(c,"category")
- inherits=get_tag(c,"inherits")
- write_string(f,'<class name="'+class_name+'" '+category+inherits+'>')
- inc_tab()
- write_string(f,"<brief_description>")
+def find_method_descr(old_class, name):
- if (old_class!=None):
- old_brief_descr=old_class.find("brief_description")
- if (old_brief_descr!=None):
- write_string(f,escape(old_brief_descr.text.strip()))
+ methods = old_class.find("methods")
+ if(methods != None and len(list(methods)) > 0):
+ for m in list(methods):
+ if (m.attrib["name"] == name):
+ description = m.find("description")
+ if (description != None and description.text.strip() != ""):
+ return description.text
+ return None
- write_string(f,"</brief_description>")
- write_string(f,"<description>")
- if (old_class!=None):
- old_descr=old_class.find("description")
- if (old_descr!=None):
- write_string(f,escape(old_descr.text.strip()))
+def find_signal_descr(old_class, name):
- write_string(f,"</description>")
+ signals = old_class.find("signals")
+ if(signals != None and len(list(signals)) > 0):
+ for m in list(signals):
+ if (m.attrib["name"] == name):
+ description = m.find("description")
+ if (description != None and description.text.strip() != ""):
+ return description.text
- methods = c.find("methods")
- if(methods!=None and len(list(methods))>0):
+ return None
- write_string(f,"<methods>")
- inc_tab()
- for m in list(methods):
- qualifiers=get_tag(m,"qualifiers")
+def find_constant_descr(old_class, name):
- write_string(f,'<method name="'+escape(m.attrib["name"])+'" ' +qualifiers+'>')
- inc_tab()
+ if (old_class == None):
+ return None
+ constants = old_class.find("constants")
+ if(constants != None and len(list(constants)) > 0):
+ for m in list(constants):
+ if (m.attrib["name"] == name):
+ if (m.text.strip() != ""):
+ return m.text
+ return None
- for a in list(m):
- if (a.tag=="return"):
- typ=get_tag(a,"type")
- write_string(f,'<return'+typ+'>');
- write_string(f,'</return>');
- elif (a.tag=="argument"):
- default=get_tag(a,"default")
+def write_class(c):
+ class_name = c.attrib["name"]
+ print("Parsing Class: " + class_name)
+ if (class_name in old_classes):
+ old_class = old_classes[class_name]
+ else:
+ old_class = None
- write_string(f,'<argument index="'+a.attrib["index"]+'" name="'+escape(a.attrib["name"])+'" type="'+a.attrib["type"]+'"' +default+'>');
- write_string(f,'</argument>');
+ category = get_tag(c, "category")
+ inherits = get_tag(c, "inherits")
+ write_string(f, '<class name="' + class_name + '" ' + category + inherits + '>')
+ inc_tab()
- write_string(f,'<description>');
- if (old_class!=None):
- old_method_descr=find_method_descr(old_class,m.attrib["name"])
- if (old_method_descr):
- write_string(f,escape(escape(old_method_descr.strip())))
+ write_string(f, "<brief_description>")
- write_string(f,'</description>');
- dec_tab()
- write_string(f,"</method>")
- dec_tab()
- write_string(f,"</methods>")
+ if (old_class != None):
+ old_brief_descr = old_class.find("brief_description")
+ if (old_brief_descr != None):
+ write_string(f, escape(old_brief_descr.text.strip()))
- signals = c.find("signals")
- if(signals!=None and len(list(signals))>0):
+ write_string(f, "</brief_description>")
- write_string(f,"<signals>")
- inc_tab()
+ write_string(f, "<description>")
+ if (old_class != None):
+ old_descr = old_class.find("description")
+ if (old_descr != None):
+ write_string(f, escape(old_descr.text.strip()))
- for m in list(signals):
+ write_string(f, "</description>")
- write_string(f,'<signal name="'+escape(m.attrib["name"])+'">')
- inc_tab()
+ methods = c.find("methods")
+ if(methods != None and len(list(methods)) > 0):
- for a in list(m):
- if (a.tag=="argument"):
+ write_string(f, "<methods>")
+ inc_tab()
- write_string(f,'<argument index="'+a.attrib["index"]+'" name="'+escape(a.attrib["name"])+'" type="'+a.attrib["type"]+'">');
- write_string(f,'</argument>');
+ for m in list(methods):
+ qualifiers = get_tag(m, "qualifiers")
- write_string(f,'<description>');
- if (old_class!=None):
- old_signal_descr=find_signal_descr(old_class,m.attrib["name"])
- if (old_signal_descr):
- write_string(f,escape(old_signal_descr.strip()))
- write_string(f,'</description>');
- dec_tab()
- write_string(f,"</signal>")
- dec_tab()
- write_string(f,"</signals>")
+ write_string(f, '<method name="' + escape(m.attrib["name"]) + '" ' + qualifiers + '>')
+ inc_tab()
- constants = c.find("constants")
- if(constants!=None and len(list(constants))>0):
+ for a in list(m):
+ if (a.tag == "return"):
+ typ = get_tag(a, "type")
+ write_string(f, '<return' + typ + '>')
+ write_string(f, '</return>')
+ elif (a.tag == "argument"):
- write_string(f,"<constants>")
- inc_tab()
+ default = get_tag(a, "default")
- for m in list(constants):
+ write_string(f, '<argument index="' + a.attrib["index"] + '" name="' + escape(a.attrib["name"]) + '" type="' + a.attrib["type"] + '"' + default + '>')
+ write_string(f, '</argument>')
- write_string(f,'<constant name="'+escape(m.attrib["name"])+'" value="'+m.attrib["value"]+'">')
- old_constant_descr=find_constant_descr(old_class,m.attrib["name"])
- if (old_constant_descr):
- write_string(f,escape(old_constant_descr.strip()))
- write_string(f,"</constant>")
+ write_string(f, '<description>')
+ if (old_class != None):
+ old_method_descr = find_method_descr(old_class, m.attrib["name"])
+ if (old_method_descr):
+ write_string(f, escape(escape(old_method_descr.strip())))
- dec_tab()
- write_string(f,"</constants>")
+ write_string(f, '</description>')
+ dec_tab()
+ write_string(f, "</method>")
+ dec_tab()
+ write_string(f, "</methods>")
- dec_tab()
- write_string(f,"</class>")
+ signals = c.find("signals")
+ if(signals != None and len(list(signals)) > 0):
-for c in list(old_doc):
- old_classes[c.attrib["name"]]=c
+ write_string(f, "<signals>")
+ inc_tab()
-for c in list(new_doc):
- write_class(c)
-write_string(f,'</doc>\n')
+ for m in list(signals):
+
+ write_string(f, '<signal name="' + escape(m.attrib["name"]) + '">')
+ inc_tab()
+
+ for a in list(m):
+ if (a.tag == "argument"):
+ write_string(f, '<argument index="' + a.attrib["index"] + '" name="' + escape(a.attrib["name"]) + '" type="' + a.attrib["type"] + '">')
+ write_string(f, '</argument>')
+ write_string(f, '<description>')
+ if (old_class != None):
+ old_signal_descr = find_signal_descr(old_class, m.attrib["name"])
+ if (old_signal_descr):
+ write_string(f, escape(old_signal_descr.strip()))
+ write_string(f, '</description>')
+ dec_tab()
+ write_string(f, "</signal>")
+ dec_tab()
+ write_string(f, "</signals>")
+
+ constants = c.find("constants")
+ if(constants != None and len(list(constants)) > 0):
+
+ write_string(f, "<constants>")
+ inc_tab()
+
+ for m in list(constants):
+
+ write_string(f, '<constant name="' + escape(m.attrib["name"]) + '" value="' + m.attrib["value"] + '">')
+ old_constant_descr = find_constant_descr(old_class, m.attrib["name"])
+ if (old_constant_descr):
+ write_string(f, escape(old_constant_descr.strip()))
+ write_string(f, "</constant>")
+
+ dec_tab()
+ write_string(f, "</constants>")
+
+ dec_tab()
+ write_string(f, "</class>")
+
+for c in list(old_doc):
+ old_classes[c.attrib["name"]] = c
+
+for c in list(new_doc):
+ write_class(c)
+write_string(f, '</doc>\n')