Exemple #1
0
def main_grep(regex, paths, includes, excludes, opts):
    grepper = findlib2.grep(regex, paths, includes=includes, 
                            excludes=excludes)
    for group in findlib2.grouped_by_path(grepper):
        if not isinstance(group[0], Hit):
            assert len(group) == 1
            log.debug(group[0])
            continue

        last_line_nums = None
        for hit in group:
            # Skip reporting a hit if it is on a line (or lines) that
            # has already been printed (a la grep).
            start, end = hit.line_num_range
            line_nums = set(range(start, end+1))
            if last_line_nums and line_nums.issubset(last_line_nums):
                continue
            last_line_nums = line_nums

            lines = list(hit.lines)
            if len(lines) > 1:
                if opts.show_line_number:
                    start, end = hit.line_num_range
                    _safe_print("%s:%d-%d:" % (hit.path, start+1, end+1))
                else:
                    _safe_print("%s:" % hit.path)
                for line in lines:
                    _safe_print("  " + _chomp(line))
            else:
                if opts.show_line_number:
                    _safe_print("%s:%d:%s" % (hit.path, hit.line_num_range[0]+1,
                                              _chomp(lines[0])))
                else:
                    _safe_print("%s:%s" % (hit.path, _chomp(lines[0])))
Exemple #2
0
def main_find_matching_files(regex, paths, includes, excludes, opts):
    for event in findlib2.grep(regex, paths, files_with_matches=True,
                               includes=includes, excludes=excludes):
        if isinstance(event, Hit):
            print event.path