Mercurial > hg
annotate mercurial/strutil.py @ 29696:2f64e5a6efb8
py3: use unicode literals in changelog.py
collections.namedtuple type and field names must be str in Python 3.
Our custom module importer was rewriting them to bytes literals,
making this fail.
In addition, __slots__ values must also be unicode.
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Thu, 04 Aug 2016 00:15:39 +0530 |
parents | b723f05ec49b |
children |
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 |
25979
b723f05ec49b
strutil: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
10263
diff
changeset
|
8 from __future__ import absolute_import |
b723f05ec49b
strutil: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
10263
diff
changeset
|
9 |
2953 | 10 def findall(haystack, needle, start=0, end=None): |
11 if end is None: | |
12 end = len(haystack) | |
13 if end < 0: | |
14 end += len(haystack) | |
15 if start < 0: | |
16 start += len(haystack) | |
17 while start < end: | |
18 c = haystack.find(needle, start, end) | |
19 if c == -1: | |
20 break | |
21 yield c | |
22 start = c + 1 | |
23 | |
24 def rfindall(haystack, needle, start=0, end=None): | |
25 if end is None: | |
26 end = len(haystack) | |
27 if end < 0: | |
28 end += len(haystack) | |
29 if start < 0: | |
30 start += len(haystack) | |
31 while end >= 0: | |
32 c = haystack.rfind(needle, start, end) | |
33 if c == -1: | |
34 break | |
35 yield c | |
36 end = c - 1 |