--- a/eric7/DocumentationTools/ModuleDocumentor.py Mon Sep 13 18:00:33 2021 +0200 +++ b/eric7/DocumentationTools/ModuleDocumentor.py Mon Sep 13 18:27:17 2021 +0200 @@ -66,65 +66,12 @@ """ Constructor - @param outputDir The output directory for the files + @param module information of the parsed Python file @type str """ self.module = module self.empty = True - # TODO: replace these assignments - self.headerTemplate = TemplatesListsStyleCSS.headerTemplate - self.footerTemplate = TemplatesListsStyleCSS.footerTemplate - self.moduleTemplate = TemplatesListsStyleCSS.moduleTemplate - self.rbFileTemplate = TemplatesListsStyleCSS.rbFileTemplate - self.classTemplate = TemplatesListsStyleCSS.classTemplate - self.methodTemplate = TemplatesListsStyleCSS.methodTemplate - self.constructorTemplate = ( - TemplatesListsStyleCSS.constructorTemplate) - self.rbModuleTemplate = TemplatesListsStyleCSS.rbModuleTemplate - self.rbModulesClassTemplate = ( - TemplatesListsStyleCSS.rbModulesClassTemplate) - self.functionTemplate = TemplatesListsStyleCSS.functionTemplate - self.listTemplate = TemplatesListsStyleCSS.listTemplate - self.listEntryTemplate = TemplatesListsStyleCSS.listEntryTemplate - self.listEntryNoneTemplate = ( - TemplatesListsStyleCSS.listEntryNoneTemplate) - self.listEntryDeprecatedTemplate = ( - TemplatesListsStyleCSS.listEntryDeprecatedTemplate) - self.listEntrySimpleTemplate = ( - TemplatesListsStyleCSS.listEntrySimpleTemplate) - self.paragraphTemplate = TemplatesListsStyleCSS.paragraphTemplate - self.parametersListTemplate = ( - TemplatesListsStyleCSS.parametersListTemplate) - self.parameterTypesListEntryTemplate = ( - TemplatesListsStyleCSS.parameterTypesListEntryTemplate) - self.parametersListEntryTemplate = ( - TemplatesListsStyleCSS.parametersListEntryTemplate) - self.returnsTemplate = TemplatesListsStyleCSS.returnsTemplate - self.returnTypesTemplate = ( - TemplatesListsStyleCSS.returnTypesTemplate) - self.yieldsTemplate = TemplatesListsStyleCSS.yieldsTemplate - self.yieldTypesTemplate = ( - TemplatesListsStyleCSS.yieldTypesTemplate) - self.exceptionsListTemplate = ( - TemplatesListsStyleCSS.exceptionsListTemplate) - self.exceptionsListEntryTemplate = ( - TemplatesListsStyleCSS.exceptionsListEntryTemplate) - self.signalsListTemplate = ( - TemplatesListsStyleCSS.signalsListTemplate) - self.signalsListEntryTemplate = ( - TemplatesListsStyleCSS.signalsListEntryTemplate) - self.eventsListTemplate = TemplatesListsStyleCSS.eventsListTemplate - self.eventsListEntryTemplate = ( - TemplatesListsStyleCSS.eventsListEntryTemplate) - self.deprecatedTemplate = TemplatesListsStyleCSS.deprecatedTemplate - self.authorInfoTemplate = TemplatesListsStyleCSS.authorInfoTemplate - self.seeListTemplate = TemplatesListsStyleCSS.seeListTemplate - self.seeListEntryTemplate = ( - TemplatesListsStyleCSS.seeListEntryTemplate) - self.seeLinkTemplate = TemplatesListsStyleCSS.seeLinkTemplate - self.sinceInfoTemplate = TemplatesListsStyleCSS.sinceInfoTemplate - self.keywords = [] # list of tuples containing the name (string) and # the ref (string). The ref is without the filename part. @@ -174,11 +121,11 @@ @return The source code documentation. (string) """ doc = ( - self.headerTemplate.format( + TemplatesListsStyleCSS.headerTemplate.format( **{'Title': self.module.name} ) + self.__genModuleSection() + - self.footerTemplate + TemplatesListsStyleCSS.footerTemplate ) self.generated = True return doc @@ -195,7 +142,7 @@ try: if self.module.type == RB_SOURCE: rbModulesList = self.__genRbModulesListSection() - modBody = self.rbFileTemplate.format( + modBody = TemplatesListsStyleCSS.rbFileTemplate.format( **{'Module': self.module.name, 'ModuleDescription': self.__formatDescription(self.module.description), @@ -205,7 +152,7 @@ 'FunctionList': functionList, }) else: - modBody = self.moduleTemplate.format( + modBody = TemplatesListsStyleCSS.moduleTemplate.format( **{'Module': self.module.name, 'ModuleDescription': self.__formatDescription(self.module.description), @@ -244,14 +191,14 @@ """ lst = [] for name in names: - lst.append(self.listEntryTemplate.format( + lst.append(TemplatesListsStyleCSS.listEntryTemplate.format( **{'Link': "{0}".format(name), 'Name': sectionDict[name].name, 'Description': self.__getShortDescription(sectionDict[name].description), 'Deprecated': self.__checkDeprecated(sectionDict[name].description) and - self.listEntryDeprecatedTemplate or "", + TemplatesListsStyleCSS.listEntryDeprecatedTemplate or "", })) n = ("{0} ({1})".format(name, kwSuffix) if kwSuffix else "{0}".format(name)) @@ -272,12 +219,12 @@ if not scope.globals[attr].isSignal) s = ( ''.join( - [self.listEntrySimpleTemplate.format(**{'Name': name}) - for name in attrNames]) + [TemplatesListsStyleCSS.listEntrySimpleTemplate + .format(**{'Name': name}) for name in attrNames]) if attrNames else - self.listEntryNoneTemplate + TemplatesListsStyleCSS.listEntryNoneTemplate ) - return self.listTemplate.format(**{'Entries': s}) + return TemplatesListsStyleCSS.listTemplate.format(**{'Entries': s}) def __genClassListSection(self): """ @@ -291,8 +238,8 @@ self.empty = False s = self.__genListSection(names, self.module.classes) else: - s = self.listEntryNoneTemplate - return self.listTemplate.format(**{'Entries': s}) + s = TemplatesListsStyleCSS.listEntryNoneTemplate + return TemplatesListsStyleCSS.listTemplate.format(**{'Entries': s}) def __genRbModulesListSection(self): """ @@ -306,8 +253,8 @@ self.empty = False s = self.__genListSection(names, self.module.modules) else: - s = self.listEntryNoneTemplate - return self.listTemplate.format(**{'Entries': s}) + s = TemplatesListsStyleCSS.listEntryNoneTemplate + return TemplatesListsStyleCSS.listTemplate.format(**{'Entries': s}) def __genFunctionListSection(self): """ @@ -321,8 +268,8 @@ self.empty = False s = self.__genListSection(names, self.module.functions) else: - s = self.listEntryNoneTemplate - return self.listTemplate.format(**{'Entries': s}) + s = TemplatesListsStyleCSS.listEntryNoneTemplate + return TemplatesListsStyleCSS.listTemplate.format(**{'Entries': s}) def __genClassesSection(self): """ @@ -347,7 +294,7 @@ _class, className, Function.Static) try: - clsBody = self.classTemplate.format( + clsBody = TemplatesListsStyleCSS.classTemplate.format( **{'Anchor': className, 'Class': _class.name, 'ClassSuper': supers, @@ -390,28 +337,29 @@ lst = [] if includeInit: with contextlib.suppress(KeyError): - lst.append(self.listEntryTemplate.format( + lst.append(TemplatesListsStyleCSS.listEntryTemplate.format( **{'Link': "{0}.{1}".format(className, '__init__'), 'Name': clsName, 'Description': self.__getShortDescription( sectionDict['__init__'].description), 'Deprecated': self.__checkDeprecated( sectionDict['__init__'].description) and - self.listEntryDeprecatedTemplate or "", + TemplatesListsStyleCSS.listEntryDeprecatedTemplate or + "", })) self.keywords.append( ("{0} (Constructor)".format(className), "#{0}.{1}".format(className, '__init__'))) for name in names: - lst.append(self.listEntryTemplate.format( + lst.append(TemplatesListsStyleCSS.listEntryTemplate.format( **{'Link': "{0}.{1}".format(className, name), 'Name': sectionDict[name].name, 'Description': self.__getShortDescription(sectionDict[name].description), 'Deprecated': self.__checkDeprecated(sectionDict[name].description) and - self.listEntryDeprecatedTemplate or "", + TemplatesListsStyleCSS.listEntryDeprecatedTemplate or "", })) self.keywords.append(("{0}.{1}".format(className, name), "#{0}.{1}".format(className, name))) @@ -433,7 +381,7 @@ if '__init__' in methods: methods.remove('__init__') try: - methBody = self.constructorTemplate.format( + methBody = TemplatesListsStyleCSS.constructorTemplate.format( **{'Anchor': className, 'Class': obj.name, 'Method': '__init__', @@ -461,7 +409,7 @@ methodClassifier = "" for method in methods: try: - methBody = self.methodTemplate.format( + methBody = TemplatesListsStyleCSS.methodTemplate.format( **{'Anchor': className, 'Class': obj.name, 'Method': obj.methods[method].name, @@ -486,9 +434,9 @@ includeInit=modifierFilter == Function.General) if not methList: - methList = self.listEntryNoneTemplate - return (self.listTemplate.format(**{'Entries': methList}), - ''.join(methBodies)) + methList = TemplatesListsStyleCSS.listEntryNoneTemplate + return (TemplatesListsStyleCSS.listTemplate + .format(**{'Entries': methList}), ''.join(methBodies)) def __genRbModulesSection(self): """ @@ -508,7 +456,7 @@ rbModule, rbModuleName) try: - rbmBody = self.rbModuleTemplate.format( + rbmBody = TemplatesListsStyleCSS.rbModuleTemplate.format( **{'Anchor': rbModuleName, 'Module': rbModule.name, 'ModuleDescription': @@ -552,7 +500,7 @@ _class, className, Function.General) try: - clsBody = self.rbModulesClassTemplate.format( + clsBody = TemplatesListsStyleCSS.rbModulesClassTemplate.format( **{'Anchor': className, 'Class': _class.name, 'ClassSuper': supers, @@ -576,9 +524,9 @@ classNames, obj.classes, modName) if not classesList: - classesList = self.listEntryNoneTemplate - return (self.listTemplate.format(**{'Entries': classesList}), - ''.join(classes)) + classesList = TemplatesListsStyleCSS.listEntryNoneTemplate + return (TemplatesListsStyleCSS.listTemplate + .format(**{'Entries': classesList}), ''.join(classes)) def __genRbModulesClassesListSection(self, names, sectionDict, moduleName): """ @@ -593,14 +541,14 @@ """ lst = [] for name in names: - lst.append(self.listEntryTemplate.format( + lst.append(TemplatesListsStyleCSS.listEntryTemplate.format( **{'Link': "{0}.{1}".format(moduleName, name), 'Name': sectionDict[name].name, 'Description': self.__getShortDescription(sectionDict[name].description), 'Deprecated': self.__checkDeprecated(sectionDict[name].description) and - self.listEntryDeprecatedTemplate or "", + TemplatesListsStyleCSS.listEntryDeprecatedTemplate or "", })) self.keywords.append(("{0}.{1}".format(moduleName, name), "#{0}.{1}".format(moduleName, name))) @@ -617,7 +565,7 @@ funcNames = sorted(list(self.module.functions.keys())) for funcName in funcNames: try: - funcBody = self.functionTemplate.format( + funcBody = TemplatesListsStyleCSS.functionTemplate.format( **{'Anchor': funcName, 'Function': self.module.functions[funcName].name, 'FunctionDescription': self.__formatDescription( @@ -716,11 +664,11 @@ else: linelist.append(html_uencode(line)) else: - lst.append(self.paragraphTemplate.format( + lst.append(TemplatesListsStyleCSS.paragraphTemplate.format( **{'Lines': '\n'.join(linelist)})) linelist = [] if linelist: - lst.append(self.paragraphTemplate.format( + lst.append(TemplatesListsStyleCSS.paragraphTemplate.format( **{'Lines': '\n'.join(linelist)})) return ''.join(lst) @@ -753,16 +701,23 @@ lst = [] for name, type_, lines in _list: if type_: - lst.append(self.parameterTypesListEntryTemplate.format( - **{'Name': name, - 'Type': type_, - 'Description': html_uencode('\n'.join(lines)), - })) + lst.append( + TemplatesListsStyleCSS.parameterTypesListEntryTemplate + .format( + **{'Name': name, + 'Type': type_, + 'Description': html_uencode('\n'.join(lines)), + } + ) + ) else: - lst.append(self.parametersListEntryTemplate.format( - **{'Name': name, - 'Description': html_uencode('\n'.join(lines)), - })) + lst.append( + TemplatesListsStyleCSS.parametersListEntryTemplate.format( + **{'Name': name, + 'Description': html_uencode('\n'.join(lines)), + } + ) + ) return ''.join(lst) def __formatCrossReferenceEntry(self, entry): @@ -794,7 +749,7 @@ reference = "{0}#{1}".format(reference, anchor) entry = 'href="{0}">{1}</a>'.format(reference, label) - return self.seeLinkTemplate.format(**{'Link': entry}) + return TemplatesListsStyleCSS.seeLinkTemplate.format(**{'Link': entry}) def __genSeeListSection(self, _list, template): """ @@ -1080,7 +1035,7 @@ description = self.__genParagraphs(paragraphs) if paragraphs else "" parameterSect = ( - self.parametersListTemplate.format( + TemplatesListsStyleCSS.parametersListTemplate.format( **{'Parameters': self.__genParamDescriptionListSection( paramList)}) if paramList else @@ -1088,82 +1043,88 @@ ) returnSect = ( - self.returnsTemplate.format( + TemplatesListsStyleCSS.returnsTemplate.format( html_uencode('\n'.join(returns))) if returns else "" ) returnTypesSect = ( - self.returnTypesTemplate.format( + TemplatesListsStyleCSS.returnTypesTemplate.format( html_uencode('\n'.join(returnTypes))) if returnTypes else "" ) yieldSect = ( - self.yieldsTemplate.format( + TemplatesListsStyleCSS.yieldsTemplate.format( html_uencode('\n'.join(yields))) if yields else "" ) yieldTypesSect = ( - self.yieldTypesTemplate.format( + TemplatesListsStyleCSS.yieldTypesTemplate.format( html_uencode('\n'.join(yieldTypes))) if yieldTypes else "" ) exceptionSect = ( - self.exceptionsListTemplate.format( + TemplatesListsStyleCSS.exceptionsListTemplate.format( **{'Exceptions': self.__genDescriptionListSection( - exceptionDict, self.exceptionsListEntryTemplate)}) + exceptionDict, + TemplatesListsStyleCSS.exceptionsListEntryTemplate)} + ) if exceptionDict else "" ) signalSect = ( - self.signalsListTemplate.format( + TemplatesListsStyleCSS.signalsListTemplate.format( **{'Signals': self.__genDescriptionListSection( - signalDict, self.signalsListEntryTemplate)}) + signalDict, + TemplatesListsStyleCSS.signalsListEntryTemplate)} + ) if signalDict else "" ) eventSect = ( - self.eventsListTemplate.format( + TemplatesListsStyleCSS.eventsListTemplate.format( **{'Events': self.__genDescriptionListSection( - eventDict, self.eventsListEntryTemplate)}) + eventDict, + TemplatesListsStyleCSS.eventsListEntryTemplate)} + ) if eventDict else "" ) deprecatedSect = ( - self.deprecatedTemplate.format( + TemplatesListsStyleCSS.deprecatedTemplate.format( **{'Lines': html_uencode('\n'.join(deprecated))}) if deprecated else "" ) authorInfoSect = ( - self.authorInfoTemplate.format( + TemplatesListsStyleCSS.authorInfoTemplate.format( **{'Authors': html_uencode('\n'.join(authorInfo))}) if authorInfo else "" ) sinceInfoSect = ( - self.sinceInfoTemplate.format( + TemplatesListsStyleCSS.sinceInfoTemplate.format( **{'Info': html_uencode(sinceInfo[0])}) if sinceInfo else "" ) seeSect = ( - self.seeListTemplate.format( + TemplatesListsStyleCSS.seeListTemplate.format( **{'Links': self.__genSeeListSection( - seeList, self.seeListEntryTemplate)}) + seeList, TemplatesListsStyleCSS.seeListEntryTemplate)}) if seeList else '' )