def test_build_color_index(in_, expected): """Test function. :param str in_: Input string to pass to function. :param str expected: Expected return value. """ actual = build_color_index(in_) assert actual == expected
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 __new__(cls, *args, **kwargs): """Parse color markup and instantiate.""" keep_tags = kwargs.pop('keep_tags', False) # Parse string. value_markup = args[0] if args else PARENT_CLASS() # e.g. '{red}test{/red}' value_colors, value_no_colors = parse_input(value_markup, ANSICodeMapping.DISABLE_COLORS, keep_tags) color_index = build_color_index(value_colors) # Instantiate. color_args = [cls, value_colors] + list(args[1:]) instance = PARENT_CLASS.__new__(*color_args, **kwargs) # Add additional attributes and return. instance.value_colors = value_colors instance.value_no_colors = value_no_colors instance.has_colors = value_colors != value_no_colors instance.color_index = color_index return instance
def __new__(cls, *args, **kwargs): """Parse color markup and instantiate.""" keep_tags = kwargs.pop('keep_tags', False) # Parse string. value_markup = args[0] if args else PARENT_CLASS( ) # e.g. '{red}test{/red}' value_colors, value_no_colors = parse_input( value_markup, ANSICodeMapping.DISABLE_COLORS, keep_tags) color_index = build_color_index(value_colors) # Instantiate. color_args = [cls, value_colors] + list(args[1:]) instance = PARENT_CLASS.__new__(*color_args, **kwargs) # Add additional attributes and return. instance.value_colors = value_colors instance.value_no_colors = value_no_colors instance.has_colors = value_colors != value_no_colors instance.color_index = color_index return instance