Exemple #1
0
    def parse_leg_order(self, data):
        in_tuple = False
        result = _legtool.vector_vector_int()
        current_tuple = _legtool.vector_int()
        current_item = ''

        for x in data:
            if x == '(':
                if in_tuple:
                    return result
                in_tuple = True
            if x >= '0' and x <= '9':
                current_item += x
            else:
                if len(current_item):
                    value = int(current_item)
                    current_item = ''
                    if in_tuple:
                        current_tuple.append(value)
                    else:
                        this_tuple = _legtool.vector_int()
                        this_tuple.append(value)
                        result.append(this_tuple)
                if x == ')':
                    if not in_tuple:
                        return result
                    result.append(current_tuple)
                    current_tuple = _legtool.vector_int()
                    in_tuple = False

        if len(current_item):
            value = int(current_item)
            this_tuple = _legtool.vector_int()
            this_tuple.append(value)
            result.append(this_tuple)

        return result
Exemple #2
0
    def parse_leg_order(self, data):
        in_tuple = False
        result = _legtool.vector_vector_int()
        current_tuple = _legtool.vector_int()
        current_item = ''

        for x in data:
            if x == '(':
                if in_tuple:
                    return result
                in_tuple = True
            if x >= '0' and x <= '9':
                current_item += x
            else:
                if len(current_item):
                    value = int(current_item)
                    current_item = ''
                    if in_tuple:
                        current_tuple.append(value)
                    else:
                        this_tuple = _legtool.vector_int()
                        this_tuple.append(value)
                        result.append(this_tuple)
                if x == ')':
                    if not in_tuple:
                        return result
                    result.append(current_tuple)
                    current_tuple = _legtool.vector_int()
                    in_tuple = False

        if len(current_item):
            value = int(current_item)
            this_tuple = _legtool.vector_int()
            this_tuple.append(value)
            result.append(this_tuple)

        return result
Exemple #3
0
    def validate_leg_order(self, data):
        """Accept data that is human entered.  Return a string
        containing a valid leg ordering, which will consist of a comma
        separate list of leg numbers, or tuples of leg numbers."""
        entered_values = []
        try:
            entered_values = self.parse_leg_order(data)
        except:
            pass

        required_legs = set(self.ikconfig_tab.get_enabled_legs())

        used_legs = {}
        actual_legs = []
        for group in entered_values:
            for leg in group:
                required_legs -= set([leg])

        for x in required_legs:
            this_group = _legtool.vector_int()
            this_group.append(x)
            entered_values.append(this_group)

        return self.stringify_leg_order(entered_values)
Exemple #4
0
    def validate_leg_order(self, data):
        """Accept data that is human entered.  Return a string
        containing a valid leg ordering, which will consist of a comma
        separate list of leg numbers, or tuples of leg numbers."""
        entered_values = []
        try:
            entered_values = self.parse_leg_order(data)
        except:
            pass

        required_legs = set(self.ikconfig_tab.get_enabled_legs())

        used_legs = {}
        actual_legs = []
        for group in entered_values:
            for leg in group:
                required_legs -= set([leg])

        for x in required_legs:
            this_group = _legtool.vector_int()
            this_group.append(x)
            entered_values.append(this_group)

        return self.stringify_leg_order(entered_values)