U
    ôbÛV©  ã                   @   sH   d Z dZdZddlmZ ddlmZ ddlZG dd„ deƒZd	d
„ Z	dS )zRomilly CockingzCopyright 2011 hamcrest.orgzBSD, see License.txté    )ÚBaseMatcher)Ú	hasmethodNc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚStringContainsInOrderc                 G   s0   |D ] }t |tjƒst| jjd ƒ‚q|| _d S )Nz requires string arguments)Ú
isinstanceÚsixZstring_typesÚ	TypeErrorÚ	__class__Ú__name__Ú
substrings)Úselfr
   Ú	substring© r   úM/usr/lib/python3/dist-packages/hamcrest/library/text/stringcontainsinorder.pyÚ__init__   s    ÿzStringContainsInOrder.__init__c                 C   s<   t |dƒsdS d}| jD ]}| ||¡}|dkr dS qdS )NÚfindFr   éÿÿÿÿT)r   r
   r   )r   ÚitemZ
from_indexr   r   r   r   Ú_matches   s    

zStringContainsInOrder._matchesc                 C   s   |  ddd| j¡ d S )Nza string containing z, z	 in order)Zappend_listr
   )r   Zdescriptionr   r   r   Údescribe_to   s    
ÿz!StringContainsInOrder.describe_toN)r	   Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   
   s   
r   c                  G   s   t | Ž S )a  Matches if object is a string containing a given list of substrings in
    relative order.

    :param string1,...:  A comma-separated list of strings.

    This matcher first checks whether the evaluated object is a string. If so,
    it checks whether it contains a given list of strings, in relative order to
    each other. The searches are performed starting from the beginning of the
    evaluated string.

    Example::

        string_contains_in_order("bc", "fg", "jkl")

    will match "abcdefghijklm".

    )r   )r
   r   r   r   Ústring_contains_in_order"   s    r   )
Ú
__author__Z__copyright__Z__license__Zhamcrest.core.base_matcherr   Zhamcrest.core.helpers.hasmethodr   r   r   r   r   r   r   r   Ú<module>   s   