strutil.py
36 lines
| 953 B
| text/x-python
|
PythonLexer
/ mercurial / strutil.py
Vadim Gelfer
|
r2953 | # strutil.py - string utilities for Mercurial | ||
# | ||||
# Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com> | ||||
# | ||||
Martin Geisler
|
r8225 | # This software may be used and distributed according to the terms of the | ||
Matt Mackall
|
r10263 | # GNU General Public License version 2 or any later version. | ||
Vadim Gelfer
|
r2953 | |||
Gregory Szorc
|
r25979 | from __future__ import absolute_import | ||
Vadim Gelfer
|
r2953 | def findall(haystack, needle, start=0, end=None): | ||
if end is None: | ||||
end = len(haystack) | ||||
if end < 0: | ||||
end += len(haystack) | ||||
if start < 0: | ||||
start += len(haystack) | ||||
while start < end: | ||||
c = haystack.find(needle, start, end) | ||||
if c == -1: | ||||
break | ||||
yield c | ||||
start = c + 1 | ||||
def rfindall(haystack, needle, start=0, end=None): | ||||
if end is None: | ||||
end = len(haystack) | ||||
if end < 0: | ||||
end += len(haystack) | ||||
if start < 0: | ||||
start += len(haystack) | ||||
while end >= 0: | ||||
c = haystack.rfind(needle, start, end) | ||||
if c == -1: | ||||
break | ||||
yield c | ||||
end = c - 1 | ||||