diff --git a/monkClass.py b/monkClass.py index f99f2a7..849ac2b 100644 --- a/monkClass.py +++ b/monkClass.py @@ -1,6 +1,7 @@ #!/usr/bin/python import monkDebug as debug import monkNode as Node +import monkModule as module ## @@ -57,6 +58,20 @@ class Class(Node.Node): ret += element['access'] + " " + element['class'] ret += " { ... };" return ret + + def get_parents(self): + if len(self.inherit) == 0: + return [] + # note this ony get the first parent ... + parent = module.get_element_with_name(self.inherit[0]['class']) + cparent = [] + if parent != None: + debug.info(" plop : " + self.name + " " + str(parent) + " " + parent.get_name()) + cparent = parent.get_parents() + pass + #heritage = parent. + cparent.append(self.inherit[0]) + return cparent diff --git a/monkEnum.py b/monkEnum.py index 20557ad..60980f0 100644 --- a/monkEnum.py +++ b/monkEnum.py @@ -39,7 +39,25 @@ class Enum(Node.Node): if len(element) > 2: if element[1] == '=': for tmp in element[2:]: - value += tmp - self.listElement.append({'name' : element[0], 'value' : value}) + value = tmp + if value == "": + if self.baseValue == None: + value = "???" + else: + value = str(self.baseValue) + self.baseValue += 1 + else: + try: + tmpVal = int(value) + self.baseValue = tmpVal + 1 + except: + debug.debug("can not parse enum value : '" + value + "'") + self.baseValue = None + self.listElement.append({'name' : element[0], 'value' : value, 'doc' : ""}) - debug.verbose("enum list : " + str(self.listElement)) \ No newline at end of file + debug.verbose("enum list : " + str(self.listElement)) + + def get_enum_list(self): + return self.listElement + + diff --git a/monkHtml.py b/monkHtml.py index 97d49aa..a2314a9 100644 --- a/monkHtml.py +++ b/monkHtml.py @@ -98,41 +98,42 @@ def white_space(size) : ret += " " return ret -def generate_menu(element, namespaceStack=[], level=1): +def generate_menu(element, level=1): + namespaceStack = element.get_namespace() listBase = element.get_all_sub_type(['namespace']) if len(listBase) == 0: return "" ret = "" ret += '
\n"); - listBaseConstructor = element.get_all_sub_type(['constructor']) - for elem in listBaseConstructor: - ret = write_methode(elem, namespaceStack, displayLen) - file.write(ret) - listBaseDestructor = element.get_all_sub_type(['destructor']) - for elem in listBaseDestructor: - ret = write_methode(elem, namespaceStack, displayLen) - file.write(ret) - file.write("\n"); - file.write("
\n"); + if len(element.get_all_sub_type(['constructor', 'destructor'])) != 0: + file.write('\n") - file.write("Constructor and Destructor:
\n') + file.write('\n'); + listBaseConstructor = element.get_all_sub_type(['constructor']) + for elem in listBaseConstructor: + ret = write_methode(elem, namespaceStack, displayLen) + file.write(ret) + listBaseDestructor = element.get_all_sub_type(['destructor']) + for elem in listBaseDestructor: + ret = write_methode(elem, namespaceStack, displayLen) + file.write(ret) + file.write('\n'); + file.write('
\n') + + if element.get_node_type() in ['library', 'application', 'namespace', 'class', 'struct']: listBaseMethode = element.get_all_sub_type(['methode']) - displayLen = calculate_methode_size(listBaseMethode) - for elem in listBaseMethode: - ret = write_methode(elem, namespaceStack, displayLen) - file.write(ret) - file.write("
\n'); + displayLen = calculate_methode_size(listBaseMethode) + for elem in listBaseMethode: + ret = write_methode(elem, namespaceStack, displayLen) + file.write(ret) + file.write('\n') + file.write('
\n'); + file.write(str(parent)); + file.write('\n'); + + if len(listBase) != 0: # display all functions : - file.write("
\n"); - file.write(write_methode(element, namespaceStack, link = False)) - file.write("\n"); + file.write('
\n'); + file.write(write_methode(subElement, namespaceStack, link = False)) + file.write('\n'); #debug.info(str(element['node'].get_doc())); - file.write(parse_doxygen(element['node'].get_doc())); - file.write("
' + enumElement['name'] + ' | ') + nbCol += 1 + if nbCol == nbColumn: + nbCol = 0 + file.write('
\n')
+ file.write(enumElement['name'] + white_space(elementSize-len(enumElement['name'])) + ' = ' + enumElement['value'] + '')
+ file.write('
\n')
+ if enumElement['doc'] != "":
+ file.write(parse_doxygen(enumElement['doc']));
+
+ if element.get_node_type() == 'union':
file.write("TODO : the page ...");
- elif element.get_node_type() == 'enum':
- file.write("TODO : the page ...");
- elif element.get_node_type() == 'union':
- file.write("TODO : the page ...");
- else:
- # not in a specific file ...
- debug.warning("might not appear here :'" + element.get_node_type() + "' = '" + element.get_name() + "'")
- pass
+
file.write(footer)
file.close();
diff --git a/monkModule.py b/monkModule.py
index 9419320..b1e541a 100644
--- a/monkModule.py
+++ b/monkModule.py
@@ -8,6 +8,7 @@ import monkTools as tools
import monkNode as Node
import monkParse as Parse
import monkHtml
+import re
class Module:
##
@@ -104,6 +105,9 @@ 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:
+ self.structureLib.set_namespace()
+
# display the hierarchie of all the class and namespace ...
#self.structureLib.debug_display()
if self.pathGlobalDoc != "":
@@ -356,3 +360,15 @@ def list_all_module_with_desc():
def get_link_type(type):
return ""
+def get_element_with_name(type):
+ global moduleList
+ debug.info("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))
+ return element
+ debug.info("we not find : " + type + " = " + str(ret))
+ return None
\ No newline at end of file
diff --git a/monkNode.py b/monkNode.py
index b864e7d..850c7cf 100644
--- a/monkNode.py
+++ b/monkNode.py
@@ -24,6 +24,8 @@ class Node():
self.lineNumber = lineNumber
self.subList = None
self.access = None
+ # namespace elements : (set when all element are parsed ...
+ self.namespace = []
def to_str(self):
return ""
@@ -135,7 +137,50 @@ class Node():
# TODO : Sorted the list ...
pass
return ret
-
+
+ def set_namespace(self, hierarchy = []):
+ # store namespaces:
+ self.namespace = hierarchy
+ # 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_namespace(hierarchy)
+ hierarchy.pop()
+ elif self.nodeType in ['library', 'application']:
+ for element in self.subList:
+ element['node'].set_namespace()
+
+ def get_namespace(self):
+ return self.namespace
+
+ def find(self, list):
+ debug.info("find : " + str(list) + " in " + self.nodeType)
+ if len(list) == 0:
+ return None
+ if self.nodeType in ['library', 'application']:
+ if self.subList == None:
+ return None
+ for element in self.subList:
+ ret = element['node'].find(list)
+ if ret != None:
+ return ret
+ return None
+ if list[0] != self.name:
+ return None
+ if self.nodeType not in ['class', 'namespace', 'struct']:
+ return self
+ tmpList = list[1:]
+ if self.subList == None:
+ return None
+ for element in self.subList:
+ ret = element['node'].find(tmpList)
+ if ret != None:
+ return ret
+ return None
+
class MainNode(Node):
diff --git a/theme/base.css b/theme/base.css
index 22c4ee2..41e43ee 100644
--- a/theme/base.css
+++ b/theme/base.css
@@ -95,7 +95,10 @@ pre {
border-radius: 4px;
}
-
+.enumeration-list td {
+ padding-left:10px;
+ padding-right:10px;
+}
.code-function {
text-decoration:none;
diff --git a/theme/menu.css b/theme/menu.css
index 26ed389..1c93b04 100644
--- a/theme/menu.css
+++ b/theme/menu.css
@@ -143,4 +143,5 @@ div#menu li a:hover {
border-left-color: #000ADE;
background: #6699FF;
font-weight:bold;
-}
\ No newline at end of file
+}
+