def _iter_text_wave(
            self, text, numbers, step=1,
            fore=None, back=None, style=None, rgb_mode=False):
        """ Yield colorized characters from `text`, using a wave of `numbers`.
            Arguments:
                text      : String to be colorized.
                numbers   : A list/tuple of numbers (256 colors).
                step      : Number of characters to colorize per color.
                fore      : Fore color to use (name or number).
                            (Back will be gradient)
                back      : Background color to use (name or number).
                            (Fore will be gradient)
                style     : Style name to use.
                rgb_mode  : Use number for rgb value.
                            This should never be used when the numbers
                            are rgb values themselves.
        """
        if fore and back:
            raise ValueError('Both fore and back colors cannot be specified.')

        pos = 0
        end = len(text)
        numbergen = self._iter_wave(numbers)

        def make_color(n):
            try:
                r, g, b = n
            except TypeError:
                if rgb_mode:
                    return n, n, n
                return n
            return r, g, b

        for value in numbergen:
            lastchar = pos + step
            yield self.color(
                text[pos:lastchar],
                fore=make_color(value) if fore is None else fore,
                back=make_color(value) if fore is not None else back,
                style=style
            )
            if lastchar >= end:
                numbergen.send(True)
            pos = lastchar