Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/patch.py @ 29738:160c829dd5d0
patch: use `iter(callable, sentinel)` instead of while True
This is functionally equivalent, but is a little more concise.
author | Augie Fackler <augie@google.com> |
---|---|
date | Fri, 05 Aug 2016 14:00:14 -0400 |
parents | 40d53d4b5925 |
children | 50f2966f86ca |
comparison
equal
deleted
inserted
replaced
29737:cbeb2cb578b1 | 29738:160c829dd5d0 |
---|---|
408 del self.buf[0] | 408 del self.buf[0] |
409 return l | 409 return l |
410 return self.fp.readline() | 410 return self.fp.readline() |
411 | 411 |
412 def __iter__(self): | 412 def __iter__(self): |
413 while True: | 413 return iter(self.readline, '') |
414 l = self.readline() | |
415 if not l: | |
416 break | |
417 yield l | |
418 | 414 |
419 class abstractbackend(object): | 415 class abstractbackend(object): |
420 def __init__(self, ui): | 416 def __init__(self, ui): |
421 self.ui = ui | 417 self.ui = ui |
422 | 418 |
1686 lr = linereader(fp) | 1682 lr = linereader(fp) |
1687 | 1683 |
1688 def scanwhile(first, p): | 1684 def scanwhile(first, p): |
1689 """scan lr while predicate holds""" | 1685 """scan lr while predicate holds""" |
1690 lines = [first] | 1686 lines = [first] |
1691 while True: | 1687 for line in iter(lr.readline, ''): |
1692 line = lr.readline() | |
1693 if not line: | |
1694 break | |
1695 if p(line): | 1688 if p(line): |
1696 lines.append(line) | 1689 lines.append(line) |
1697 else: | 1690 else: |
1698 lr.push(line) | 1691 lr.push(line) |
1699 break | 1692 break |
1700 return lines | 1693 return lines |
1701 | 1694 |
1702 while True: | 1695 for line in iter(lr.readline, ''): |
1703 line = lr.readline() | |
1704 if not line: | |
1705 break | |
1706 if line.startswith('diff --git a/') or line.startswith('diff -r '): | 1696 if line.startswith('diff --git a/') or line.startswith('diff -r '): |
1707 def notheader(line): | 1697 def notheader(line): |
1708 s = line.split(None, 1) | 1698 s = line.split(None, 1) |
1709 return not s or s[0] not in ('---', 'diff') | 1699 return not s or s[0] not in ('---', 'diff') |
1710 header = scanwhile(line, notheader) | 1700 header = scanwhile(line, notheader) |
1770 # our states | 1760 # our states |
1771 BFILE = 1 | 1761 BFILE = 1 |
1772 context = None | 1762 context = None |
1773 lr = linereader(fp) | 1763 lr = linereader(fp) |
1774 | 1764 |
1775 while True: | 1765 for x in iter(lr.readline, ''): |
1776 x = lr.readline() | |
1777 if not x: | |
1778 break | |
1779 if state == BFILE and ( | 1766 if state == BFILE and ( |
1780 (not context and x[0] == '@') | 1767 (not context and x[0] == '@') |
1781 or (context is not False and x.startswith('***************')) | 1768 or (context is not False and x.startswith('***************')) |
1782 or x.startswith('GIT binary patch')): | 1769 or x.startswith('GIT binary patch')): |
1783 gp = None | 1770 gp = None |