def parse_name(self):
        """This function uses string patterns to match a title cased name.
        This is done in a loop until there are no more names to match so as
        to be able to include surnames etc. in the output."""
        name = []
        while True:
            # Match the current char until it doesnt match the given pattern:
            # first char must be an uppercase alpha and the rest must be lower
            # cased alphas.
            part = self.match_string_pattern(spat.alphau, spat.alphal)
            if part == '':
                break  # There is no more matchable strings.
            self.eat_string(part)  # Eat the found string
            name.append(part)  # Store this name part
            if self.get_char() == ' ':  # if the current char is a single space
                # eat it. This allows one space between parts
                self.eat_length(1)

        if not len(name):  # if no name parts where detected raise an expection.
            raise PartpyError(self, 'Expecting a title cased name')
        return ' '.join(name)
This function uses string patterns to match a title cased name.
        This is done in a loop until there are no more names to match so as
        to be able to include surnames etc. in the output.