def get_region(self) -> dict: """ This function parses the region specified in the YAML :return: """ left = parse_and_evaluate( str(self.yaml_data['statementMapping']['region'][0]['left'])) right = parse_and_evaluate( str(self.yaml_data['statementMapping']['region'][0]['right'])) top = parse_and_evaluate( str(self.yaml_data['statementMapping']['region'][0]['top'])) bottom = parse_and_evaluate( str(self.yaml_data['statementMapping']['region'][0]['bottom'])) if 'skip_row' in self.yaml_data['statementMapping']['region'][0]: skip_row = list() for i in range( len(self.yaml_data['statementMapping']['region'][0] ['skip_row'])): skip_row.append( generate_tree(self.yaml_data['statementMapping']['region'] [0]['skip_row'][i])) else: skip_row = None if 'skip_column' in self.yaml_data['statementMapping']['region'][0]: skip_column = list() for i in range( len(self.yaml_data['statementMapping']['region'][0] ['skip_column'])): skip_column.append( generate_tree(self.yaml_data['statementMapping']['region'] [0]['skip_column'][i])) else: skip_column = None if 'skip_cell' in self.yaml_data['statementMapping']['region'][0]: skip_cell = list() for i in range( len(self.yaml_data['statementMapping']['region'][0] ['skip_cell'])): skip_cell.append( generate_tree(self.yaml_data['statementMapping']['region'] [0]['skip_cell'][i])) else: skip_cell = None return { 'left': left, 'right': right, 'top': top, 'bottom': bottom, 'skip_row': skip_row, 'skip_column': skip_column, 'skip_cell': skip_cell }
def resolve_template(self, template: str) -> None: """ This function parses all the expressions of the template and replace them with their respective class objects :param template: :return: """ # Resolve Template Item if needed template_item = self.get_template_item() if template_item: if not template_item.isalnum(): template['item'] = generate_tree(template_item) template['item'].get_variable_cell_operator_arguments() else: template['item'] = template_item # Resolve Template Property if needed template_property = self.get_template_property() if template_property: if template_property and not template_property.isalnum(): template['property'] = generate_tree(template_property) template['property'].get_variable_cell_operator_arguments() else: template['property'] = template_property # Resolve Template Value if needed template_value = self.get_template_value() if template_value: if not template_value.isalnum(): template["value"] = generate_tree(template_value) template["value"].get_variable_cell_operator_arguments() else: template["value"] = template_value if template.get('qualifier', None): for i in range(len(template['qualifier'])): qualifier_value = str(template['qualifier'][i]['value']) if qualifier_value: if not qualifier_value.isalnum(): template['qualifier'][i]['value'] = generate_tree( qualifier_value) var = template['qualifier'][i][ 'value'].get_variable_cell_operator_arguments() else: template['qualifier'][i]['value'] = qualifier_value
def get_region(self, bindings: dict) -> dict: """ This function parses the region specified in the YAML :return: """ left = generate_tree(str(self.yaml_data['statementMapping']['region'][0]['left'])) left.get_variable_cell_operator_arguments() right = generate_tree(str(self.yaml_data['statementMapping']['region'][0]['right'])) right.get_variable_cell_operator_arguments() top = generate_tree(str(self.yaml_data['statementMapping']['region'][0]['top'])) top.get_variable_cell_operator_arguments() bottom = generate_tree(str(self.yaml_data['statementMapping']['region'][0]['bottom'])) bottom.get_variable_cell_operator_arguments() has_right = left.check_for_right() has_left = right.check_for_left() has_top = bottom.check_for_top() has_bottom = top.check_for_bottom() if not (has_left and has_right): if has_left and not has_right: left = self.iterate_on_variables(left, bindings) bindings['$left'] = left right = self.iterate_on_variables(right, bindings) bindings['$right'] = right elif has_right and not has_left: right = self.iterate_on_variables(right, bindings) bindings['$right'] = right left = self.iterate_on_variables(left, bindings) bindings['$left'] = left elif not has_left and not has_right: left = self.iterate_on_variables(left, bindings) right = self.iterate_on_variables(right, bindings) bindings['$left'] = left bindings['$right'] = right else: return {'error': 'Recursive definition of left and right region parameters'} if not (has_top and has_bottom): if has_top and not has_bottom: top = self.iterate_on_variables(top, bindings) bindings['$top'] = top bottom = self.iterate_on_variables(bottom, bindings) bindings['$bottom'] = bottom elif has_bottom and not has_top: bottom = self.iterate_on_variables(bottom, bindings) bindings['$bottom'] = bottom top = self.iterate_on_variables(top, bindings) bindings['$top'] = top elif not has_top and not has_bottom: top = self.iterate_on_variables(top, bindings) bottom = self.iterate_on_variables(bottom, bindings) bindings['$top'] = top bindings['$bottom'] = bottom else: return {'error': 'Recursive definition of top and bottom region parameters'} if 'skip_row' in self.yaml_data['statementMapping']['region'][0]: skip_row = list() for i in range(len(self.yaml_data['statementMapping']['region'][0]['skip_row'])): skip_row.append(generate_tree(self.yaml_data['statementMapping']['region'][0]['skip_row'][i])) else: skip_row = None if 'skip_column' in self.yaml_data['statementMapping']['region'][0]: skip_column = list() for i in range(len(self.yaml_data['statementMapping']['region'][0]['skip_column'])): skip_column.append(generate_tree(self.yaml_data['statementMapping']['region'][0]['skip_column'][i])) else: skip_column = None if 'skip_cell' in self.yaml_data['statementMapping']['region'][0]: skip_cell = list() for i in range(len(self.yaml_data['statementMapping']['region'][0]['skip_cell'])): skip_cell.append(generate_tree(self.yaml_data['statementMapping']['region'][0]['skip_cell'][i])) else: skip_cell = None return {'left': left, 'right': right, 'top': top, 'bottom': bottom, 'skip_row': skip_row, 'skip_column': skip_column, 'skip_cell': skip_cell}