From 5e80692aa8a46264c9d0b3c04bfa750bd0230369 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Sat, 28 Dec 2013 12:44:01 +0100 Subject: [PATCH] [DEV] better display --- codeBB/BB_Text.py | 7 +- monkHtml.py | 189 ++++++++++++++++++++++++++++++++-------------- monkParse.py | 8 +- 3 files changed, 144 insertions(+), 60 deletions(-) diff --git a/codeBB/BB_Text.py b/codeBB/BB_Text.py index e2aa84f..06f320b 100644 --- a/codeBB/BB_Text.py +++ b/codeBB/BB_Text.py @@ -48,7 +48,7 @@ def transcode(value): value, flags=re.DOTALL) - value = re.sub(r'\[color=(\#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]', + value = re.sub(r'\[color=(\(#[0-9A-F]{6}|[a-z\-]+|.+?)\](.*?)\[/color\]', r'\2', value, flags=re.DOTALL) @@ -83,6 +83,11 @@ def transcode(value): value, flags=re.DOTALL) + value = re.sub(r'\[pre\]((\\\[|\\\]|.)*?)\[/pre\]', + r'
\1
', + value, + flags=re.DOTALL) + value = re.sub(r'\[note\](.*?)\[/note\]', r'
Note:
\1
', value, diff --git a/monkHtml.py b/monkHtml.py index d46a55d..f9124fc 100644 --- a/monkHtml.py +++ b/monkHtml.py @@ -36,8 +36,9 @@ def display_doxygen_param(comment, input, output): def parse_doxygen(data) : + data = "\n" + data if '@' in data: - streams = data.split("@") + streams = data.split("\n@") else: streams = [ "brief " + data] data2 = '' @@ -66,7 +67,7 @@ def parse_doxygen(data) : if element[:1] == "\n" \ or element[:2] == "\n\n": # nothing to do : Nomale case of the first \n - None + pass elif element[:14] == "param[in,out] " \ or element[:14] == "param[out,in] ": data3 += display_doxygen_param(element[14:], True, True) @@ -139,9 +140,13 @@ def calculate_methode_size(list): methodeSize = 0; haveVirtual = False for element in list: - if element['node'].get_virtual() == True: + if element['node'].get_node_type() == 'methode' \ + and element['node'].get_virtual() == True: haveVirtual = True - retType = element['node'].get_return_type().to_str() + if element['node'].get_node_type() == 'variable': + retType = element['node'].get_type().to_str() + else: + retType = element['node'].get_return_type().to_str() tmpLen = len(retType) if returnSize < tmpLen: returnSize = tmpLen @@ -153,13 +158,14 @@ def calculate_methode_size(list): def write_methode(element, namespaceStack, displaySize = None, link = True): if element['node'].get_request_hidden() == True: - return + return "" if displaySize == None: displaySize = calculate_methode_size([element]) ret = "" if 'access' in element.keys(): if element['access'] == 'private': ret += '- ' + return "" elif element['access'] == 'protected': ret += '# ' elif element['access'] == 'public': @@ -169,45 +175,59 @@ def write_methode(element, namespaceStack, displaySize = None, link = True): else: ret += ' ' - if element['node'].get_virtual() == True: - ret += module.display_color('virtual') + ' ' - elif displaySize[2] == True: - ret += ' ' - - raw, decorated = element['node'].get_return_type().to_str_decorated() + if element['node'].get_node_type() == 'variable': + if displaySize[2] == True: + ret += ' ' + raw, decorated = element['node'].get_type().to_str_decorated() + else: + if element['node'].get_virtual() == True: + ret += module.display_color('virtual') + ' ' + elif displaySize[2] == True: + ret += ' ' + + raw, decorated = element['node'].get_return_type().to_str_decorated() if raw != "": ret += decorated ret += " " raw += " " + ret += white_space(displaySize[0] - len(raw)+1) name = element['node'].get_name() - if link == True: - ret += '' + name + '' - else: - ret += '' + name + '' - ret += white_space(displaySize[1] - len(name)) + ' (' - listParam = element['node'].get_param() - first = True - for param in listParam: - if first == False: - ret += ',
' - if displaySize[2] == True: - ret += ' ' - ret += white_space(displaySize[0] + displaySize[1] +5) - first = False - typeNoDecoration, typeDecorated = param.get_type().to_str_decorated() - #retParam = module.display_color(param.get_type().to_str()) - retParam = typeDecorated - if retParam != "": - ret += retParam - ret += " " - ret += "" + param.get_name() + "" - ret += ')' - if element['node'].get_virtual_pure() == True: - ret += ' = 0' - if element['node'].get_constant() == True: - ret += module.display_color(' const') + if element['node'].get_node_type() == 'variable': + classDecoration = "code-member" + else: + classDecoration = "code-function" + + if link == True: + ret += '' + name + '' + else: + ret += '' + name + '' + + if element['node'].get_node_type() != 'variable': + ret += white_space(displaySize[1] - len(name)) + ' (' + listParam = element['node'].get_param() + first = True + for param in listParam: + if first == False: + ret += ',
' + if displaySize[2] == True: + ret += ' ' + ret += white_space(displaySize[0] + displaySize[1] +5) + first = False + typeNoDecoration, typeDecorated = param.get_type().to_str_decorated() + #retParam = module.display_color(param.get_type().to_str()) + retParam = typeDecorated + if retParam != "": + ret += retParam + ret += " " + ret += "" + param.get_name() + "" + ret += ')' + if element['node'].get_virtual_pure() == True: + ret += ' = 0' + if element['node'].get_constant() == True: + ret += module.display_color(' const') + ret += ';' ret += '
' return ret @@ -246,49 +266,97 @@ def generate_page(outFolder, header, footer, element): file.write(documentation) file.write('
\n') + if element.get_node_type() in ['namespace']: + tmpName = element.get_name() + tmpNameUpper = tmpName.upper() + tmpName = tmpNameUpper[0] + tmpName[1:] + compleateName = "" + for namespace in element.get_namespace(): + compleateName += namespace + "::" + compleateName += tmpName + associatedClass = module.get_element_with_name(compleateName) + if associatedClass != None: + file.write('

Associated Class:

'); + file.write('\n'); + + if element.get_node_type() in ['class']: + tmpName = element.get_name() + tmpNameLower = tmpName.lower() + tmpName = tmpNameLower[0] + tmpName[1:] + compleateName = "" + for namespace in element.get_namespace(): + compleateName += namespace + "::" + compleateName += tmpName + associatedClass = module.get_element_with_name(compleateName) + if associatedClass != None: + file.write('

Associated Namespace:

'); + file.write('\n'); + if element.get_node_type() in ['library', 'application', 'namespace', 'class', 'struct']: for nameElement in ['namespace', 'class', 'struct', 'enum', 'union']: listBase = element.get_all_sub_type(nameElement) if len(listBase) == 0: continue - file.write('

' + nameElement + ':

\n'); - file.write('\n'); + if elem['node'].get_request_hidden() == True: + continue + if 'access' in elem.keys() \ + and elem['access'] == 'private': + continue + descLocal += '
  • ' + generate_link(elem['node']) + '
  • ' + if descLocal != "": + file.write('

    ' + nameElement + ':

    \n'); + file.write('\n'); # calculate element size : - listBase = element.get_all_sub_type(['methode', 'constructor', 'destructor']) + listBase = element.get_all_sub_type(['methode', 'constructor', 'destructor', 'variable']) displayLen = calculate_methode_size(listBase) if element.get_node_type() == 'class' \ or element.get_node_type() == 'struct': if len(element.get_all_sub_type(['constructor', 'destructor'])) != 0: - file.write('

    Constructor and Destructor:

    \n') - file.write('
    \n');
    +			globalWrite = ""
     			listBaseConstructor = element.get_all_sub_type(['constructor'])
     			for elem in listBaseConstructor:
    -				ret = write_methode(elem, namespaceStack, displayLen)
    -				file.write(ret)
    +				if elem['access'] == 'private':
    +					continue
    +				globalWrite += write_methode(elem, namespaceStack, displayLen)
     			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 elem['access'] == 'private': + continue + globalWrite += write_methode(elem, namespaceStack, displayLen) + if globalWrite != "": + file.write('

    Constructor and Destructor:

    \n') + file.write('
    \n');
    +				file.write(globalWrite);
    +				file.write('
    \n'); + file.write('
    \n') + if element.get_node_type() in ['library', 'application', 'namespace', 'class', 'struct']: - listBaseMethode = element.get_all_sub_type(['methode']) + listBaseMethode = element.get_all_sub_type(['methode', 'variable']) if len(listBaseMethode) != 0: - file.write('

    Synopsis:

    \n') - file.write('
    \n');
    +			globalWrite = ""
     			displayLen = calculate_methode_size(listBaseMethode)
     			for elem in listBaseMethode:
    -				ret = write_methode(elem, namespaceStack, displayLen)
    -				file.write(ret)
    -			file.write('
    \n') - file.write('
    \n') + if 'access' in elem.keys() \ + and elem['access'] == 'private': + continue + globalWrite += write_methode(elem, namespaceStack, displayLen) + if globalWrite != "": + file.write('

    Synopsis:

    \n') + file.write('
    \n');
    +				file.write(globalWrite);
    +				file.write('
    \n') + file.write('
    \n') # generate herirage list : if element.get_node_type() == 'class': @@ -359,6 +427,11 @@ def generate_page(outFolder, header, footer, element): allDetailDoc = "" lastDoc = "" for subElement in listBase: + if subElement['node'].get_request_hidden() == True: + continue + if 'access' in subElement.keys() \ + and subElement['access'] == 'private': + continue file.write('') if lastDoc != "" \ and subElement['node'].get_request_in_previous() == True: diff --git a/monkParse.py b/monkParse.py index 12faa24..9fcf368 100644 --- a/monkParse.py +++ b/monkParse.py @@ -302,6 +302,9 @@ class parse_file(): self.nameStack.append(",") else: self.nameStack.append("//!< " + tok.value) + elif self.previous != None \ + and self.previous.get_node_type() == 'variable': + self.previous.add_doc([tok.value]) else: #self.lastComment.append(tok.value) pass @@ -336,6 +339,7 @@ class parse_file(): self.brace_type_push('unknow', self.nameStack) self.stack = [] self.nameStack = [] + self.lastComment = [] elif tok.type == 'CLOSE_BRACE': if len(self.nameStack) != 0: if self.previous_is('enum') == True: @@ -415,7 +419,7 @@ class parse_file(): else: # TODO : Check if it is true in all case : self.brace_type_append('variable', self.nameStack); - #debug.warning(self.gen_debug_space() + "semicolumn : " + str(self.nameStack)); + #debug.warning(self.gen_debug_space() + "variable : " + str(self.nameStack)); self.stack = [] self.nameStack = [] self.lastComment = [] @@ -427,6 +431,7 @@ class parse_file(): def create_element(self, type, stack): ret = None + self.previous = None if type == 'empty' \ or type == 'enum list': pass @@ -452,6 +457,7 @@ class parse_file(): ret = Enum.Enum(stack, self.headerFileName, self.curLine, self.lastComment) elif type == 'variable': ret = Variable.Variable(stack, self.headerFileName, self.curLine, self.lastComment) + self.previous = ret else: debug.error("unknow type ...") return ret