diff --git a/monkClass.py b/monkClass.py index 849ac2b..2313609 100644 --- a/monkClass.py +++ b/monkClass.py @@ -66,7 +66,7 @@ class Class(Node.Node): parent = module.get_element_with_name(self.inherit[0]['class']) cparent = [] if parent != None: - debug.info(" plop : " + self.name + " " + str(parent) + " " + parent.get_name()) + #debug.info(" plop : " + self.name + " " + str(parent) + " " + parent.get_name()) cparent = parent.get_parents() pass #heritage = parent. diff --git a/monkHtml.py b/monkHtml.py index a2314a9..ea9e19c 100644 --- a/monkHtml.py +++ b/monkHtml.py @@ -118,11 +118,7 @@ def generate_menu(element, level=1): return ret def generate_html_page_name(element): - namespaceStack = element.get_namespace() - link = "" - for name in namespaceStack: - link += name + "__" - return element.get_node_type() + "_" + link + element.get_name() + '.html' + return element.get_doc_website_page_local() def generate_name(element): namespaceStack = element.get_namespace() @@ -285,11 +281,29 @@ def generate_page(outFolder, header, footer, element): # generate herirage list : if element.get_node_type() == 'class': parent = element.get_parents() + debug.verbose("parrent of " + element.get_name() + " : " + str(parent)) child = None - if parent != []: + if len(parent) != 0: file.write('

Object Hierarchy:

\n') file.write('
\n');
-			file.write(str(parent));
+			level = 0
+			revertList = []
+			for elemmm in reversed(parent):
+				revertList.append(elemmm)
+			revertList.append({'access':'me', 'class':element.get_displayable_name()})
+			for parentElem in revertList:
+				access = ""
+				if parentElem['access'] == 'public':
+					access = "+"
+				elif parentElem['access'] == 'protected':
+					access = "#"
+				elif parentElem['access'] == 'private':
+					access = "-"
+				file.write(white_space(level * 4))
+				if level != 0:
+					file.write('+--> ')
+				file.write(access + parentElem['class'] + '
') + level += 1 file.write('
\n'); diff --git a/monkModule.py b/monkModule.py index b1e541a..0ed1896 100644 --- a/monkModule.py +++ b/monkModule.py @@ -57,6 +57,9 @@ class Module: def set_website(self, url): self.webSite = url + def get_website(self): + return self.webSite + ## ## @brief set the parsing folder ## @param[in] path New path to parse @@ -105,8 +108,10 @@ class Module: fileCompleteName = os.path.join(root, filename) debug.debug(" Find a file : '" + fileCompleteName + "'") self.add_file(fileCompleteName) - # all file is parset ==> now we create the namespacing of ll elements: + # all file is parset ==> now we create the namespacing of all elements: self.structureLib.set_namespace() + self.structureLib.set_module_link(self) + #self.structureLib.complete_display() # display the hierarchie of all the class and namespace ... #self.structureLib.debug_display() @@ -362,13 +367,13 @@ def get_link_type(type): def get_element_with_name(type): global moduleList - debug.info("try find : " + str(type) + " ") + debug.verbose("try find : " + str(type) + " ") ret = re.sub(r'::', ':', type) ret = ret.split(":") for mod in moduleList: element = mod['node'].get_base_doc_node().find(ret) if element != None: - debug.info("we find : " + type + " = " + str(ret) + " " + str(element)) + debug.debug("we find : " + type + " = " + str(ret) + " " + str(element)) return element - debug.info("we not find : " + type + " = " + str(ret)) + debug.warning("we not find : " + type + " = " + str(ret)) return None \ No newline at end of file diff --git a/monkNode.py b/monkNode.py index 850c7cf..84f77df 100644 --- a/monkNode.py +++ b/monkNode.py @@ -26,6 +26,7 @@ class Node(): self.access = None # namespace elements : (set when all element are parsed ... self.namespace = [] + self.moduleLink = None # this is a link on the main application node or library node (usefull to get the website ...) def to_str(self): return "" @@ -39,6 +40,13 @@ class Node(): def get_name(self): return self.name + def get_displayable_name(self): + ret = "" + for namespace in self.namespace: + ret += namespace + "::" + ret += self.name + return ret + def get_uid(self): return self.uid @@ -138,26 +146,71 @@ class Node(): pass return ret - def set_namespace(self, hierarchy = []): - # store namespaces: - self.namespace = hierarchy + def get_doc_website_page(self): + if self.moduleLink == None: + return "" + ret = self.moduleLink.get_website() + ret += "/" + ret += self.get_node_type() + ret += "_" + for name in self.namespace: + ret += name + "__" + ret += self.name + ret += '.html' + return ret + + def get_doc_website_page_local(self): + ret = self.get_node_type() + ret += "_" + for name in self.namespace: + ret += name + "__" + ret += self.name + ret += '.html' + return ret + + def set_module_link(self, module): + self.moduleLink = module # set for all sub elements ... if self.subList == None: return if self.nodeType in ['class', 'namespace', 'struct']: for element in self.subList: - hierarchy.append(self.get_name()) + element['node'].set_module_link(module) + elif self.nodeType in ['library', 'application']: + for element in self.subList: + element['node'].set_module_link(module) + + def set_namespace(self, hierarchy = []): + #debug.info('set namespace : ' + self.name + ' : ' + str(hierarchy)) + # store namespaces: + for tmpName in hierarchy: + self.namespace.append(tmpName) + # set for all sub elements ... + if self.subList == None: + return + if self.nodeType in ['class', 'namespace', 'struct']: + for element in self.subList: + hierarchy.append(self.name) element['node'].set_namespace(hierarchy) + #debug.info(" ==> " + str(element['node'].get_namespace())) hierarchy.pop() elif self.nodeType in ['library', 'application']: for element in self.subList: element['node'].set_namespace() + #debug.info(" ==> " + str(element['node'].get_namespace())) def get_namespace(self): return self.namespace + def complete_display(self): + debug.info(str(self.namespace) + ' : ' + self.name) + if self.subList == None: + return + for element in self.subList: + element['node'].complete_display() + def find(self, list): - debug.info("find : " + str(list) + " in " + self.nodeType) + debug.verbose("find : " + str(list) + " in " + self.nodeType + "(" + self.name + ")") if len(list) == 0: return None if self.nodeType in ['library', 'application']: @@ -170,9 +223,12 @@ class Node(): return None if list[0] != self.name: return None - if self.nodeType not in ['class', 'namespace', 'struct']: - return self tmpList = list[1:] + if len(tmpList) == 0: + return self + elif self.nodeType not in ['class', 'namespace', 'struct']: + # have other sub element and other elemetn than upper can have sub element ... + return None if self.subList == None: return None for element in self.subList: