made some more code generic
This commit is contained in:
@ -141,7 +141,6 @@ class ReturnValueParser(FileParser):
|
||||
self.count = 0
|
||||
# Stores last three lines
|
||||
self.last_lines = ["", "", ""]
|
||||
self.moving_window_center_idx = 3
|
||||
self.current_interface_id_entries = {
|
||||
"Name": "",
|
||||
"ID": 0,
|
||||
@ -153,17 +152,8 @@ class ReturnValueParser(FileParser):
|
||||
'RETURN_FAILED', 'HasReturnvaluesIF.h',
|
||||
'HasReturnvaluesIF')})
|
||||
|
||||
def set_moving_window_mode(self, moving_window_size: int):
|
||||
"""
|
||||
Set moving window parsing mode
|
||||
:param moving_window_size:
|
||||
:return:
|
||||
"""
|
||||
super().set_moving_window_mode(DEFAULT_MOVING_WINDOWS_SIZE)
|
||||
|
||||
def _handle_file_parsing(self, file_name: str, *args, **kwargs):
|
||||
"""
|
||||
Former way to parse returnvalues. Not recommended anymore.
|
||||
"""Former way to parse returnvalues. Not recommended anymore.
|
||||
:param file_name:
|
||||
:param args:
|
||||
:param kwargs:
|
||||
@ -177,18 +167,22 @@ class ReturnValueParser(FileParser):
|
||||
for line in all_lines:
|
||||
self.__handle_line_reading(line, file_name, print_truncated_entries)
|
||||
|
||||
def _handle_file_parsing_moving_window(self, file_name: str, current_line: int,
|
||||
moving_window_size: int, moving_window: list, *args,
|
||||
**kwargs):
|
||||
def _handle_file_parsing_moving_window(
|
||||
self, file_name: str, current_line: int, moving_window_size: int, moving_window: list,
|
||||
*args, **kwargs
|
||||
):
|
||||
"""Parse for returnvalues using a moving window"""
|
||||
interface_id_match = re.search(
|
||||
rf"{CLASS_ID_NAMESPACE}::([a-zA-Z_0-9]*)", moving_window[self.moving_window_center_idx]
|
||||
rf"{CLASS_ID_NAMESPACE}::([a-zA-Z_0-9]*)", moving_window[self._moving_window_center_idx]
|
||||
)
|
||||
|
||||
if interface_id_match:
|
||||
self.__handle_interfaceid_match(interface_id_match=interface_id_match, file_name=file_name)
|
||||
self.__handle_interfaceid_match(
|
||||
interface_id_match=interface_id_match, file_name=file_name
|
||||
)
|
||||
returnvalue_match = re.search(
|
||||
r"^[\s]*static const(?:expr)?[\s]*ReturnValue_t[\s]*([\w]*)[\s]*=[\s]*((?!;).*$)",
|
||||
moving_window[self.moving_window_center_idx], re.DOTALL
|
||||
moving_window[self._moving_window_center_idx], re.DOTALL
|
||||
)
|
||||
full_returnvalue_string = ""
|
||||
if returnvalue_match:
|
||||
@ -196,10 +190,12 @@ class ReturnValueParser(FileParser):
|
||||
full_returnvalue_string = returnvalue_match.group(0)
|
||||
else:
|
||||
full_returnvalue_string = self.__build_multi_line_returnvalue_string(
|
||||
moving_window=moving_window, first_line=moving_window[self.moving_window_center_idx]
|
||||
moving_window=moving_window,
|
||||
first_line=moving_window[self._moving_window_center_idx]
|
||||
)
|
||||
returnvalue_match = re.search(
|
||||
r"^[\s]*static const(?:expr)? ReturnValue_t[\s]*([\w] *)[\s]*=[\s]*.*::[\w]*\(([\w]*),[\s]*([\d]*)\)",
|
||||
r"^[\s]*static const(?:expr)? ReturnValue_t[\s]*([\w] *)[\s]*"
|
||||
r"=[\s]*.*::[\w]*\(([\w]*),[\s]*([\d]*)\)",
|
||||
full_returnvalue_string
|
||||
)
|
||||
if not returnvalue_match:
|
||||
@ -211,59 +207,21 @@ class ReturnValueParser(FileParser):
|
||||
if returnvalue_match:
|
||||
description = self.__search_for_descrip_string(moving_window=moving_window)
|
||||
self.__handle_returnvalue_match(
|
||||
name_match=returnvalue_match.group(1), file_name=file_name, number_match=returnvalue_match.group(2),
|
||||
description=description
|
||||
name_match=returnvalue_match.group(1), file_name=file_name,
|
||||
number_match=returnvalue_match.group(2), description=description
|
||||
)
|
||||
pass
|
||||
|
||||
def __build_multi_line_returnvalue_string(
|
||||
self, first_line: str, moving_window: List[str]
|
||||
) -> str:
|
||||
all_lines = first_line.rstrip()
|
||||
end_found = False
|
||||
current_idx = self.moving_window_center_idx
|
||||
while not end_found and current_idx < len(moving_window) - 1:
|
||||
current_idx += 1
|
||||
string_to_add = moving_window[current_idx].lstrip()
|
||||
if ";" in moving_window[current_idx]:
|
||||
all_lines += string_to_add
|
||||
break
|
||||
else:
|
||||
string_to_add.rstrip()
|
||||
all_lines += string_to_add
|
||||
return all_lines
|
||||
return self._build_multi_line_string_generic(
|
||||
first_line=first_line, moving_window=moving_window
|
||||
)
|
||||
|
||||
def __search_for_descrip_string(self, moving_window: List[str]) -> str:
|
||||
current_idx = self.moving_window_center_idx - 1
|
||||
# Look at the line above first
|
||||
descrip_match = re.search(
|
||||
r"\[EXPORT\][\s]*:[\s]*\[COMMENT\]", moving_window[current_idx]
|
||||
return self._search_for_descrip_string_generic(
|
||||
moving_window=moving_window, break_pattern=r"^[\s]*static const(?:expr)? ReturnValue_t"
|
||||
)
|
||||
if not descrip_match:
|
||||
while current_idx > 0:
|
||||
current_idx -= 1
|
||||
if re.search(r"^[\s]*static const(?:expr)? ReturnValue_t", moving_window[current_idx]):
|
||||
break
|
||||
descrip_match = re.search(
|
||||
r"\[EXPORT\][\s]*:[\s]*\[COMMENT\]", moving_window[current_idx]
|
||||
)
|
||||
if descrip_match:
|
||||
break
|
||||
if descrip_match:
|
||||
current_build_idx = current_idx
|
||||
descrip_string = ""
|
||||
while current_build_idx < self.moving_window_center_idx:
|
||||
string_to_add = moving_window[current_build_idx].lstrip()
|
||||
string_to_add = string_to_add.lstrip("//!<>")
|
||||
string_to_add = string_to_add.rstrip()
|
||||
descrip_string += string_to_add
|
||||
current_build_idx += 1
|
||||
else:
|
||||
return ""
|
||||
resulting_description = re.search(
|
||||
r"\[EXPORT\][\s]*:[\s]*\[COMMENT\](.*)", descrip_string
|
||||
)
|
||||
return resulting_description.group(1)
|
||||
|
||||
def __handle_line_reading(self, line, file_name, print_truncated_entries: bool):
|
||||
newline = line
|
||||
@ -327,9 +285,10 @@ class ReturnValueParser(FileParser):
|
||||
def export_to_file(filename: str, list_of_entries: dict, file_separator: str):
|
||||
file = open(filename, "w")
|
||||
for entry in list_of_entries.items():
|
||||
file.write(hex(entry[0]) + file_separator + entry[1][0] + file_separator + entry[1][1] +
|
||||
file_separator + entry[1][2] + file_separator
|
||||
+ entry[1][3] + file_separator + entry[1][4] + '\n')
|
||||
file.write(
|
||||
hex(entry[0]) + file_separator + entry[1][0] + file_separator + entry[1][1] +
|
||||
file_separator + entry[1][2] + file_separator + entry[1][3] + file_separator + entry[1][4] + '\n'
|
||||
)
|
||||
file.close()
|
||||
|
||||
def build_checked_string(self, first_part, second_part, max_string_len: int,
|
||||
|
Reference in New Issue
Block a user