From de46745926f6fb98d48056e51fbbeef1eda79f9d Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Mon, 15 Jul 2019 10:05:26 +0200 Subject: [PATCH] Fix "methods returning this type" not accounting for vectors --- telethon_generator/generators/docs.py | 7 +++---- telethon_generator/parsers/tlobject/tlobject.py | 8 ++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/telethon_generator/generators/docs.py b/telethon_generator/generators/docs.py index 89554f4a..d18484c5 100755 --- a/telethon_generator/generators/docs.py +++ b/telethon_generator/generators/docs.py @@ -230,7 +230,7 @@ def _write_html_pages(root, tlobjects, methods, layer, input_res): type_to_functions = defaultdict(list) for tlobject in tlobjects: d = type_to_functions if tlobject.is_function else type_to_constructors - d[tlobject.result].append(tlobject) + d[tlobject.innermost_result].append(tlobject) for t, cs in type_to_constructors.items(): type_to_constructors[t] = list(sorted(cs, key=lambda c: c.name)) @@ -295,8 +295,7 @@ def _write_html_pages(root, tlobjects, methods, layer, input_res): else: if re.search('^vector<', tlobject.result, re.IGNORECASE): docs.write_text('A list of the following type is returned.') - _, inner = tlobject.result.split('<') - inner = inner.strip('>') + inner = tlobject.innermost_result else: inner = tlobject.result @@ -558,7 +557,7 @@ def _write_html_pages(root, tlobjects, methods, layer, input_res): if not tlobject.result.lower() in CORE_TYPES: if re.search('^vector<', tlobject.result, re.IGNORECASE): - types.add(tlobject.result.split('<')[1].strip('>')) + types.add(tlobject.innermost_result) else: types.add(tlobject.result) diff --git a/telethon_generator/parsers/tlobject/tlobject.py b/telethon_generator/parsers/tlobject/tlobject.py index 95ce6e42..da6c5f65 100644 --- a/telethon_generator/parsers/tlobject/tlobject.py +++ b/telethon_generator/parsers/tlobject/tlobject.py @@ -58,6 +58,14 @@ class TLObject: self.real_args = list(a for a in self.sorted_args() if not (a.flag_indicator or a.generic_definition)) + @property + def innermost_result(self): + index = self.result.find('<') + if index == -1: + return self.result + else: + return self.result[index + 1:-1] + def sorted_args(self): """Returns the arguments properly sorted and ready to plug-in into a Python's method header (i.e., flags and those which