def generate_with_pattern(self, pattern=None):
        """
        Algorithm that creates the list
        based on a given pattern
        The pattern must be like string format patter:
        e.g: a@b will match an 'a' follow by any character follow by a 'b'
        """

        curlen = utils.get_pattern_length(pattern)
        if curlen > 0:
            str_generator = product(self.charset, repeat=curlen)
            pattern = pattern + self.delimiter
            fstring = utils.pattern_to_fstring(pattern)
            for each in str_generator:
                yield fstring.format(*each)