Mercurial > kallithea
diff rhodecode/lib/diffs.py @ 2391:91fae60bf2b6 codereview
merge with beta
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 05 Jun 2012 21:22:23 +0200 |
parents | 9d61aad859bc a455b2c79c85 |
children | 60dfc369df1d |
line wrap: on
line diff
--- a/rhodecode/lib/diffs.py Wed May 30 23:12:24 2012 +0200 +++ b/rhodecode/lib/diffs.py Tue Jun 05 21:22:23 2012 +0200 @@ -135,7 +135,7 @@ """ _chunk_re = re.compile(r'@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(.*)') - def __init__(self, diff, differ='diff', format='udiff'): + def __init__(self, diff, differ='diff', format='gitdiff'): """ :param diff: a text in diff format or generator :param format: format of diff passed, `udiff` or `gitdiff` @@ -289,7 +289,7 @@ do(line) do(next_) - def _parse_udiff(self): + def _parse_udiff(self, inline_diff=True): """ Parse the diff an return data for the template. """ @@ -386,9 +386,14 @@ }) line = lineiter.next() + except StopIteration: pass + sorter = lambda info: {'A': 0, 'M': 1, 'D': 2}.get(info['operation']) + if inline_diff is False: + return sorted(files, key=sorter) + # highlight inline changes for diff_data in files: for chunk in diff_data['chunks']: @@ -404,14 +409,15 @@ self.differ(line, nextline) except StopIteration: pass - return files - def prepare(self): + return sorted(files, key=sorter) + + def prepare(self, inline_diff=True): """ Prepare the passed udiff for HTML rendering. It'l return a list of dicts """ - return self._parse_udiff() + return self._parse_udiff(inline_diff=inline_diff) def _safe_id(self, idstring): """Make a string safe for including in an id attribute.