Chromium Code Reviews| Index: tools/findit/common/utils.py |
| diff --git a/tools/findit/common/utils.py b/tools/findit/common/utils.py |
| index 363048c0796fac54225b6fd8b8c3884166ad9d4b..4b989f2ddd16cdfb006905443077df5e031a3e44 100644 |
| --- a/tools/findit/common/utils.py |
| +++ b/tools/findit/common/utils.py |
| @@ -29,3 +29,31 @@ def IsGitHash(revision): |
| def GetHttpClient(): |
| # TODO(stgao): return implementation for appengine when running on appengine. |
| return HttpClientLocal |
| + |
| + |
| +def JoinLineNumbers(line_numbers, accepted_gap=1): |
|
aarya
2014/08/26 02:13:53
Please don't use accepted_gap. When someone modifi
stgao
2014/08/26 18:35:24
I think I didn't make it clear for the meaning of
|
| + """Join line numbers into line blocks.""" |
| + if not line_numbers: |
| + return '' |
| + |
| + line_numbers = map(int, line_numbers) |
| + line_numbers.sort() |
| + |
| + block = [] |
| + start_line_number = line_numbers[0] |
| + last_line_number = start_line_number |
| + for current_line_number in line_numbers[1:]: |
| + if last_line_number + accepted_gap < current_line_number: |
| + if start_line_number == last_line_number: |
| + block.append('%d' % start_line_number) |
| + else: |
| + block.append('%d-%d' % (start_line_number, last_line_number)) |
| + start_line_number = current_line_number |
| + last_line_number = current_line_number |
| + else: |
| + if start_line_number == last_line_number: |
| + block.append('%d' % start_line_number) |
| + else: |
| + block.append('%d-%d' % (start_line_number, last_line_number)) |
| + |
| + return ', '.join(block) |