|
@@ -1,237 +0,0 @@
|
|
|
-#!/usr/bin/env python
|
|
|
-# -*- coding: utf-8 -*-
|
|
|
-
|
|
|
-import sys
|
|
|
-import xml.etree.ElementTree as ET
|
|
|
-
|
|
|
-
|
|
|
-tree = ET.parse(sys.argv[1])
|
|
|
-old_doc = tree.getroot()
|
|
|
-
|
|
|
-tree = ET.parse(sys.argv[2])
|
|
|
-new_doc = tree.getroot()
|
|
|
-
|
|
|
-f = file(sys.argv[3], "wb")
|
|
|
-tab = 0
|
|
|
-
|
|
|
-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 escape(ret):
|
|
|
- ret = ret.replace("&", "&")
|
|
|
- ret = ret.replace("<", ">")
|
|
|
- ret = ret.replace(">", "<")
|
|
|
- ret = ret.replace("'", "'")
|
|
|
- ret = ret.replace('"', """)
|
|
|
- return ret
|
|
|
-
|
|
|
-
|
|
|
-def inc_tab():
|
|
|
- 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 is 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
|
|
|
-
|
|
|
-
|
|
|
-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
|
|
|
-
|
|
|
- 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>")
|
|
|
-
|
|
|
- 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()))
|
|
|
-
|
|
|
- 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()))
|
|
|
-
|
|
|
- write_string(f, "</description>")
|
|
|
-
|
|
|
- methods = c.find("methods")
|
|
|
- if methods != None and len(list(methods)) > 0:
|
|
|
-
|
|
|
- write_string(f, "<methods>")
|
|
|
- inc_tab()
|
|
|
-
|
|
|
- for m in list(methods):
|
|
|
- qualifiers = get_tag(m, "qualifiers")
|
|
|
-
|
|
|
- write_string(f, '<method name="' + escape(m.attrib["name"]) + '" ' + qualifiers + ">")
|
|
|
- inc_tab()
|
|
|
-
|
|
|
- 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")
|
|
|
-
|
|
|
- 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, "<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, "</description>")
|
|
|
- dec_tab()
|
|
|
- write_string(f, "</method>")
|
|
|
- dec_tab()
|
|
|
- write_string(f, "</methods>")
|
|
|
-
|
|
|
- signals = c.find("signals")
|
|
|
- if signals != None and len(list(signals)) > 0:
|
|
|
-
|
|
|
- write_string(f, "<signals>")
|
|
|
- inc_tab()
|
|
|
-
|
|
|
- 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")
|