def __getitem__(self, item): """Retrieve character.""" try: color_pos = self.color_index[int(item)] except TypeError: # slice return super(ColorStr, self).__getitem__(item) return self.__class__(find_char_color(self.value_colors, color_pos), keep_tags=True)
def test_find_char_color(in_, pos, expected): """Test function. :param str in_: Input string to pass to function. :param int pos: Character position in non-color string to lookup. :param str expected: Expected return value. """ index = build_color_index(in_) color_pos = index[pos] actual = find_char_color(in_, color_pos) assert actual == expected
def __iter__(self): """Yield one color-coded character at a time.""" for color_pos in self.color_index: yield self.__class__(find_char_color(self.value_colors, color_pos))