mercurial/strutil.py
author Gregory Szorc <gregory.szorc@gmail.com>
Thu, 03 Mar 2016 23:11:33 -0800
changeset 28329 e69343e80aec
parent 25979 b723f05ec49b
permissions -rw-r--r--
tests: update test output for test written on stable branch (issue5104) The changed test lines were added in d493d64757eb, which landed on stable. When this changeset merged to the default branch, the test failed because a4692267bc2d (on default but not stable) changed the order of working directory update when performing a share-based clone from pooled storage. The changes in this patch are similar to test changes in a4692267bc2d.

# 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.

from __future__ import absolute_import

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