mercurial/strutil.py
author Adrian Buehlmann <adrian@cadifra.com>
Sat, 30 Jun 2012 19:31:03 +0200
changeset 17088 31f7dd50ed40
parent 10263 25e572394f5c
child 25979 b723f05ec49b
permissions -rw-r--r--
test-largefiles: partially adapt for Windows The adaption is partial, because "serve" is not yet officially supported in tests on Windows. The test passes on Windows with an experimental testbed that supports hg serve in tests on Windows - except for some USERCACHE issues. The added (glob)'s are needed because of backslash <-> shlash issues in paths.

# strutil.py - string utilities for Mercurial
#
# Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

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