Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Unified Diff: tools/findit/common/utils.py

Issue 504443004: [Findit] Improve output format and cherry-pick bugs fix. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/findit/common/utils.py
diff --git a/tools/findit/common/utils.py b/tools/findit/common/utils.py
index 363048c0796fac54225b6fd8b8c3884166ad9d4b..5011e76e2b128a14abdf7609ce36b137c803fea8 100644
--- a/tools/findit/common/utils.py
+++ b/tools/findit/common/utils.py
@@ -29,3 +29,40 @@ def IsGitHash(revision):
def GetHttpClient():
# TODO(stgao): return implementation for appengine when running on appengine.
return HttpClientLocal
+
+
+def JoinLineNumbers(line_numbers, accepted_gap=1):
+ """Join line numbers into line blocks.
+
+ Args:
+ line_numbers: a list of line number.
+ accepted_gap: if two line numbers are within the give gap,
+ they would be combined together into a block.
+ Eg: for (1, 2, 3, 6, 7, 8, 12), if |accepted_gap| = 1, result
+ would be 1-3, 6-8, 12; if |accepted_gap| = 3, result would be
+ 1-8, 12; if |accepted_gap| =4, result would be 1-12.
+ """
+ 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)

Powered by Google App Engine
This is Rietveld 408576698