mercurial/strutil.py
author Pierre-Yves David <pierre-yves.david@fb.com>
Thu, 11 Jun 2015 15:43:11 -0700
changeset 25553 fa2e91d00e4c
parent 10263 25e572394f5c
child 25979 b723f05ec49b
permissions -rw-r--r--
revset: mark spot that feeds a set to a baseset Sets have non-defined order and this should break stuff, but as we are lucky fullreposet is also broken so the result is "not too bad". We should fix it anyway, but it is too much for my current plate.

# 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