Ejemplo n.º 1
0
def sanitize_string(
    unsanitized_string,
    leave_tabs=False,
    leave_colorization=False,
    max_lines_shown=32,
    max_line_length_shown=1024,
    # pylint: disable=dangerous-default-value
    line_color=defaultdict(lambda: ""),
    **parameters,
):
    max_lines_shown = int(max_lines_shown)
    max_line_length_shown = int(max_line_length_shown)
    lines = unsanitized_string.splitlines()
    append_repeat_message = False
    if len(lines) >= max_lines_shown:
        last_line_index = len(lines) - 1
        last_line = lines[last_line_index]
        repeats = 1
        while (repeats <= last_line_index
               and lines[last_line_index - repeats] == last_line):
            repeats += 1
        if repeats > max_lines_shown / 2 and len(
                lines) - repeats < max_lines_shown - 1:
            append_repeat_message = True
            lines = lines[0:last_line_index + 2 - repeats]

    sanitized_lines = []
    for (line_number, line) in enumerate(lines):
        if line_number >= max_lines_shown:
            sanitized_lines.append("...\n")
            break
        if len(line) > max_line_length_shown:
            line = line[0:max_line_length_shown] + " ..."
        line = line.encode("unicode_escape").decode("ascii")
        if leave_colorization:
            line = line.replace(r"\x1b", "\x1b")
        if leave_tabs:
            line = line.replace(r"\t", "\t")
            line = line.replace(r"\\", "\\")
        color = line_color[line_number]
        if color:
            line = termcolor_colored(line, color)
        sanitized_lines.append(line)
    if append_repeat_message:
        repeat_message = f"<last line repeated {repeats} times>"
        if parameters["colorize_output"]:
            repeat_message = termcolor_colored(repeat_message, "red")
        sanitized_lines.append(repeat_message)
    return "\n".join(sanitized_lines) + "\n"
Ejemplo n.º 2
0
def colored(x, color=None, on_color=None, attrs=None):
    colorize = True
    # TODO: no colorize during tests
    if colorize:  #@UndefinedVariable
        return termcolor_colored(x, color, on_color, attrs)
    else:
        return x
Ejemplo n.º 3
0
def colored(x, color=None, on_color=None, attrs=None):
    colorize = True
    # TODO: no colorize during tests
    if colorize: #@UndefinedVariable
        return termcolor_colored(x, color, on_color, attrs)
    else:
        return x
Ejemplo n.º 4
0
def sanitize_string(str,
                    leave_tabs=False,
                    leave_colorization=False,
                    max_lines_shown=32,
                    max_line_length_shown=1024,
                    line_color=defaultdict(lambda: ''),
                    colorize=False,
                    **extra_kwargs):
    lines = str.splitlines()
    append_repeat_message = False
    if len(lines) >= max_lines_shown:
        last_line_index = len(lines) - 1
        last_line = lines[last_line_index]
        repeats = 1
        while repeats <= last_line_index and lines[last_line_index -
                                                   repeats] == last_line:
            repeats += 1
        if repeats > max_lines_shown / 2 and len(
                lines) - repeats < max_lines_shown - 1:
            append_repeat_message = True
            lines = lines[0:last_line_index + 2 - repeats]

    sanitized_lines = []
    for (line_number, line) in enumerate(lines):
        if line_number >= max_lines_shown:
            sanitized_lines.append('...\n')
            break
        if len(line) > max_line_length_shown:
            line = line[0:max_line_length_shown] + ' ...'
        line = line.encode('unicode_escape').decode('ascii')
        if leave_colorization:
            line = line.replace('\\x1b', '\x1b')  # yuk FIXME
        if leave_tabs:
            line = line.replace('\\t', '\t')  # yuk FIXME
            line = line.replace('\\\\', '\\')  # yuk FIXME
        color = line_color[line_number]
        if color:
            line = termcolor_colored(line, color)
        sanitized_lines.append(line)

    if append_repeat_message:
        repeat_message = '<last line repeated %d times>' % repeats
        if colorize:
            repeat_message = termcolor_colored(repeat_message, 'red')
        sanitized_lines.append(repeat_message)
    return '\n'.join(sanitized_lines) + '\n'
Ejemplo n.º 5
0
def colored(x, color=None, on_color=None, attrs=None):
    if compmake_config.colorize: #@UndefinedVariable
        return termcolor_colored(x, color, on_color, attrs)
    else:
        return x
Ejemplo n.º 6
0
def colored(data, color):
    if sys.stdout.isatty():
        return termcolor_colored(data, color)
    else:
        return data
Ejemplo n.º 7
0
def colored(*args, **kwargs):
    colorama.init()
    return termcolor_colored(*args, **kwargs)