예제 #1
0
    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
        }
예제 #2
0
    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
예제 #3
0
    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}