eric6/DocumentationTools/ModuleDocumentor.py

branch
maintenance
changeset 8043
0acf98cd089a
parent 7924
8a96736d465e
parent 7987
e8eb8370ea94
child 8273
698ae46f40a4
equal deleted inserted replaced
7991:866adc8c315b 8043:0acf98cd089a
103 self.parametersListEntryTemplate = ( 103 self.parametersListEntryTemplate = (
104 TemplatesListsStyleCSS.parametersListEntryTemplate) 104 TemplatesListsStyleCSS.parametersListEntryTemplate)
105 self.returnsTemplate = TemplatesListsStyleCSS.returnsTemplate 105 self.returnsTemplate = TemplatesListsStyleCSS.returnsTemplate
106 self.returnTypesTemplate = ( 106 self.returnTypesTemplate = (
107 TemplatesListsStyleCSS.returnTypesTemplate) 107 TemplatesListsStyleCSS.returnTypesTemplate)
108 self.yieldsTemplate = TemplatesListsStyleCSS.yieldsTemplate
109 self.yieldTypesTemplate = (
110 TemplatesListsStyleCSS.yieldTypesTemplate)
108 self.exceptionsListTemplate = ( 111 self.exceptionsListTemplate = (
109 TemplatesListsStyleCSS.exceptionsListTemplate) 112 TemplatesListsStyleCSS.exceptionsListTemplate)
110 self.exceptionsListEntryTemplate = ( 113 self.exceptionsListEntryTemplate = (
111 TemplatesListsStyleCSS.exceptionsListEntryTemplate) 114 TemplatesListsStyleCSS.exceptionsListEntryTemplate)
112 self.signalsListTemplate = ( 115 self.signalsListTemplate = (
168 **colors)) 171 **colors))
169 self.returnsTemplate = ( 172 self.returnsTemplate = (
170 TemplatesListsStyle.returnsTemplate.format(**colors)) 173 TemplatesListsStyle.returnsTemplate.format(**colors))
171 self.returnTypesTemplate = ( 174 self.returnTypesTemplate = (
172 TemplatesListsStyle.returnTypesTemplate.format(**colors)) 175 TemplatesListsStyle.returnTypesTemplate.format(**colors))
176 self.yieldsTemplate = (
177 TemplatesListsStyle.yieldsTemplate.format(**colors))
178 self.yieldTypesTemplate = (
179 TemplatesListsStyle.yieldTypesTemplate.format(**colors))
173 self.exceptionsListTemplate = ( 180 self.exceptionsListTemplate = (
174 TemplatesListsStyle.exceptionsListTemplate.format(**colors)) 181 TemplatesListsStyle.exceptionsListTemplate.format(**colors))
175 self.exceptionsListEntryTemplate = ( 182 self.exceptionsListEntryTemplate = (
176 TemplatesListsStyle.exceptionsListEntryTemplate.format( 183 TemplatesListsStyle.exceptionsListEntryTemplate.format(
177 **colors)) 184 **colors))
936 Private method to format the contents of the documentation string. 943 Private method to format the contents of the documentation string.
937 944
938 @param descr The contents of the documentation string. (string) 945 @param descr The contents of the documentation string. (string)
939 @exception TagError A tag doesn't have the correct number 946 @exception TagError A tag doesn't have the correct number
940 of arguments. 947 of arguments.
941 @return The formated contents of the documentation string. (string) 948 @return The formatted contents of the documentation string. (string)
942 """ 949 """
943 if not descr: 950 if not descr:
944 return "" 951 return ""
945 952
946 paragraphs = [] 953 paragraphs = []
947 paramList = [] 954 paramList = []
948 returns = [] 955 returns = []
949 returnTypes = [] 956 returnTypes = []
957 yields = []
958 yieldTypes = []
950 exceptionDict = {} 959 exceptionDict = {}
951 signalDict = {} 960 signalDict = {}
952 eventDict = {} 961 eventDict = {}
953 deprecated = [] 962 deprecated = []
954 authorInfo = [] 963 authorInfo = []
959 968
960 dlist = descr.splitlines() 969 dlist = descr.splitlines()
961 while dlist and not dlist[0]: 970 while dlist and not dlist[0]:
962 del dlist[0] 971 del dlist[0]
963 lastTag = "" 972 lastTag = ""
973 buffer = ""
964 for ditem in dlist: 974 for ditem in dlist:
965 ditem = self.__processInlineTags(ditem) 975 ditem = self.__processInlineTags(ditem)
966 desc = ditem.strip() 976 desc = ditem.strip()
977 if buffer:
978 if desc.startswith("@"):
979 buffer = ""
980 raise TagError(
981 "Wrong format in {0} line.\n".format(lastTag))
982 else:
983 desc = buffer + desc
967 if desc: 984 if desc:
968 if desc.startswith(("@param", "@keyparam")): 985 if desc.startswith(("@param", "@keyparam")):
969 inTagSection = True 986 inTagSection = True
970 parts = desc.split(None, 2) 987 parts = desc.split(None, 2)
971 lastTag = parts[0] 988 lastTag = parts[0]
1019 lastItem = returns 1036 lastItem = returns
1020 elif desc.startswith("@rtype"): 1037 elif desc.startswith("@rtype"):
1021 parts = desc.split(None, 1) 1038 parts = desc.split(None, 1)
1022 if lastTag not in ["@return", "@ireturn"]: 1039 if lastTag not in ["@return", "@ireturn"]:
1023 raise TagError( 1040 raise TagError(
1024 "{0} line must be preceded by a return line\n" 1041 "{0} line must be preceded by a @return line\n"
1025 .format(parts[0])) 1042 .format(parts[0]))
1026 inTagSection = True 1043 inTagSection = True
1027 lastTag = parts[0] 1044 lastTag = parts[0]
1028 if len(parts) < 2: 1045 if len(parts) < 2:
1029 raise TagError( 1046 raise TagError(
1030 "Wrong format in {0} line.\n".format(parts[0])) 1047 "Wrong format in {0} line.\n".format(parts[0]))
1031 returnTypes = [parts[1]] 1048 returnTypes = [parts[1]]
1032 lastItem = returnTypes 1049 lastItem = returnTypes
1050 elif desc.startswith("@yield"):
1051 inTagSection = True
1052 parts = desc.split(None, 1)
1053 lastTag = parts[0]
1054 if len(parts) < 2:
1055 raise TagError(
1056 "Wrong format in {0} line.\n".format(parts[0]))
1057 yields = [parts[1]]
1058 lastItem = yields
1059 elif desc.startswith("@ytype"):
1060 parts = desc.split(None, 1)
1061 if lastTag != "@yield":
1062 raise TagError(
1063 "{0} line must be preceded by a @yield line\n"
1064 .format(parts[0]))
1065 inTagSection = True
1066 lastTag = parts[0]
1067 if len(parts) < 2:
1068 raise TagError(
1069 "Wrong format in {0} line.\n".format(parts[0]))
1070 yieldTypes = [parts[1]]
1071 lastItem = yieldTypes
1033 elif desc.startswith(("@exception", "@throws", "@raise")): 1072 elif desc.startswith(("@exception", "@throws", "@raise")):
1034 inTagSection = True 1073 inTagSection = True
1035 parts = desc.split(None, 2) 1074 parts = desc.split(None, 2)
1036 lastTag = parts[0] 1075 lastTag = parts[0]
1037 if len(parts) < 2: 1076 if len(parts) < 2:
1046 elif desc.startswith("@signal"): 1085 elif desc.startswith("@signal"):
1047 inTagSection = True 1086 inTagSection = True
1048 lastTag = desc.split(None, 1)[0] 1087 lastTag = desc.split(None, 1)[0]
1049 m = _signal(desc, 0) 1088 m = _signal(desc, 0)
1050 if m is None: 1089 if m is None:
1051 raise TagError("Wrong format in @signal line.\n") 1090 buffer = desc
1052 signalName = ( 1091 else:
1053 1 and m.group("SignalName1") or m.group("SignalName2") 1092 buffer = ""
1054 ) 1093 signalName = (
1055 signalDesc = ( 1094 m.group("SignalName1") or m.group("SignalName2")
1056 1 and m.group("SignalDescription1") or 1095 )
1057 m.group("SignalDescription2") 1096 signalDesc = (
1058 ) 1097 m.group("SignalDescription1") or
1059 signalDict[signalName] = [] 1098 m.group("SignalDescription2")
1060 if signalDesc is not None: 1099 )
1061 signalDict[signalName].append(signalDesc) 1100 signalDict[signalName] = []
1062 lastItem = signalDict[signalName] 1101 if signalDesc is not None:
1102 signalDict[signalName].append(signalDesc)
1103 lastItem = signalDict[signalName]
1063 elif desc.startswith("@event"): 1104 elif desc.startswith("@event"):
1064 inTagSection = True 1105 inTagSection = True
1065 lastTag = desc.split(None, 1)[0] 1106 lastTag = desc.split(None, 1)[0]
1066 m = _event(desc, 0) 1107 m = _event(desc, 0)
1067 if m is None: 1108 if m is None:
1068 raise TagError( 1109 buffer = desc
1069 "Wrong format in {0} line.\n".format(parts[0])) 1110 else:
1070 eventName = ( 1111 buffer = ""
1071 1 and m.group("EventName1") or m.group("EventName2") 1112 eventName = (
1072 ) 1113 m.group("EventName1") or m.group("EventName2")
1073 eventDesc = ( 1114 )
1074 1 and m.group("EventDescription1") or 1115 eventDesc = (
1075 m.group("EventDescription2") 1116 m.group("EventDescription1") or
1076 ) 1117 m.group("EventDescription2")
1077 eventDict[eventName] = [] 1118 )
1078 if eventDesc is not None: 1119 eventDict[eventName] = []
1079 eventDict[eventName].append(eventDesc) 1120 if eventDesc is not None:
1080 lastItem = eventDict[eventName] 1121 eventDict[eventName].append(eventDesc)
1122 lastItem = eventDict[eventName]
1081 elif desc.startswith("@deprecated"): 1123 elif desc.startswith("@deprecated"):
1082 inTagSection = True 1124 inTagSection = True
1083 parts = desc.split(None, 1) 1125 parts = desc.split(None, 1)
1084 lastTag = parts[0] 1126 lastTag = parts[0]
1085 if len(parts) < 2: 1127 if len(parts) < 2:
1147 returnTypesSect = self.returnTypesTemplate.format( 1189 returnTypesSect = self.returnTypesTemplate.format(
1148 html_uencode('\n'.join(returnTypes))) 1190 html_uencode('\n'.join(returnTypes)))
1149 else: 1191 else:
1150 returnTypesSect = "" 1192 returnTypesSect = ""
1151 1193
1194 if yields:
1195 yieldSect = self.yieldsTemplate.format(
1196 html_uencode('\n'.join(yields)))
1197 else:
1198 yieldSect = ""
1199
1200 if yieldTypes:
1201 yieldTypesSect = self.yieldTypesTemplate.format(
1202 html_uencode('\n'.join(yieldTypes)))
1203 else:
1204 yieldTypesSect = ""
1205
1152 if exceptionDict: 1206 if exceptionDict:
1153 exceptionSect = self.exceptionsListTemplate.format( 1207 exceptionSect = self.exceptionsListTemplate.format(
1154 **{'Exceptions': self.__genDescriptionListSection( 1208 **{'Exceptions': self.__genDescriptionListSection(
1155 exceptionDict, self.exceptionsListEntryTemplate)}) 1209 exceptionDict, self.exceptionsListEntryTemplate)})
1156 else: 1210 else:
1193 **{'Links': self.__genSeeListSection( 1247 **{'Links': self.__genSeeListSection(
1194 seeList, self.seeListEntryTemplate)}) 1248 seeList, self.seeListEntryTemplate)})
1195 else: 1249 else:
1196 seeSect = '' 1250 seeSect = ''
1197 1251
1198 return "{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}".format( 1252 return "".join([
1199 deprecatedSect, description, parameterSect, returnSect, 1253 deprecatedSect, description, parameterSect, returnSect,
1200 returnTypesSect, exceptionSect, signalSect, eventSect, 1254 returnTypesSect, yieldSect, yieldTypesSect, exceptionSect,
1201 authorInfoSect, seeSect, sinceInfoSect, 1255 signalSect, eventSect, authorInfoSect, seeSect, sinceInfoSect,
1202 ) 1256 ])
1203 1257
1204 def getQtHelpKeywords(self): 1258 def getQtHelpKeywords(self):
1205 """ 1259 """
1206 Public method to retrieve the parts for the QtHelp keywords section. 1260 Public method to retrieve the parts for the QtHelp keywords section.
1207 1261

eric ide

mercurial