Mercurial > hg
annotate mercurial/strutil.py @ 15132:81f76098211e
rebase: allow rebase to ancestor (issue3010)
We only deny rebasing onto direct parent. Thanks to the ancestor argument of
merge. the "implementation" of this feature only consist in loosing the check
and imply detach when rebasing on ancestor.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Mon, 19 Sep 2011 16:57:13 +0200 |
parents | 25e572394f5c |
children | b723f05ec49b |
rev | line source |
---|---|
2953 | 1 # strutil.py - string utilities for Mercurial |
2 # | |
3 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com> | |
4 # | |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
8155
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
2953 | 7 |
8 def findall(haystack, needle, start=0, end=None): | |
9 if end is None: | |
10 end = len(haystack) | |
11 if end < 0: | |
12 end += len(haystack) | |
13 if start < 0: | |
14 start += len(haystack) | |
15 while start < end: | |
16 c = haystack.find(needle, start, end) | |
17 if c == -1: | |
18 break | |
19 yield c | |
20 start = c + 1 | |
21 | |
22 def rfindall(haystack, needle, start=0, end=None): | |
23 if end is None: | |
24 end = len(haystack) | |
25 if end < 0: | |
26 end += len(haystack) | |
27 if start < 0: | |
28 start += len(haystack) | |
29 while end >= 0: | |
30 c = haystack.rfind(needle, start, end) | |
31 if c == -1: | |
32 break | |
33 yield c | |
34 end = c - 1 |