DebugClients/Python/coverage/misc.py

Wed, 06 Jan 2010 18:11:25 +0000

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 06 Jan 2010 18:11:25 +0000
changeset 19
3e024a7e465c
parent 0
de9c2efb9d02
child 31
744cd0b4b8cd
permissions
-rw-r--r--

More renaming to eric5.

"""Miscellaneous stuff for Coverage."""

def nice_pair(pair):
    """Make a nice string representation of a pair of numbers.
    
    If the numbers are equal, just return the number, otherwise return the pair
    with a dash between them, indicating the range.
    
    """
    start, end = pair
    if start == end:
        return "%d" % start
    else:
        return "%d-%d" % (start, end)


def format_lines(statements, lines):
    """Nicely format a list of line numbers.

    Format a list of line numbers for printing by coalescing groups of lines as
    long as the lines represent consecutive statements.  This will coalesce
    even if there are gaps between statements.
    
    For example, if `statements` is [1,2,3,4,5,10,11,12,13,14] and
    `lines` is [1,2,5,10,11,13,14] then the result will be "1-2, 5-11, 13-14".
    
    """
    pairs = []
    i = 0
    j = 0
    start = None
    pairs = []
    while i < len(statements) and j < len(lines):
        if statements[i] == lines[j]:
            if start == None:
                start = lines[j]
            end = lines[j]
            j = j + 1
        elif start:
            pairs.append((start, end))
            start = None
        i = i + 1
    if start:
        pairs.append((start, end))
    ret = ', '.join(map(nice_pair, pairs))
    return ret


class CoverageException(Exception):
    """An exception specific to Coverage."""
    pass

eric ide

mercurial