U
    ïûe=  ã                   @   sª   d dl mZmZmZmZ d dlmZ d dlmZ dddddd	gZG d
d„ deƒZG dd„ deƒZeZG dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zddd„ZdS )é    )Úprint_functionÚabsolute_importÚdivisionÚunicode_literals)Ú	text_type)ÚAnchorÚScalarStringÚLiteralScalarStringÚFoldedScalarStringÚSingleQuotedScalarStringÚDoubleQuotedScalarStringÚPreservedScalarStringc                   @   sB   e Zd ZejZdd„ Zddd„Zedd„ ƒZ	dd	„ Z
ddd„ZdS )r   c                 O   s   t j| f|ž|ŽS ©N)r   Ú__new__)ÚclsÚargsÚkw© r   ú7lib/python3.8/site-packages/ruamel_yaml/scalarstring.pyr      s    zScalarString.__new__éÿÿÿÿc                 C   s   t | ƒt | |||¡ƒS r   )Útyper   Úreplace)ÚselfÚoldÚnewZ
maxreplacer   r   r   r      s    zScalarString.replacec                 C   s(   t | tjƒst| tjtƒ ƒ t| tjƒS r   )Úhasattrr   ÚattribÚsetattrÚgetattr©r   r   r   r   Úanchor"   s    zScalarString.anchorc                 C   s"   t | tjƒsd S | jjsd S | jS r   )r   r   r   r    Úalways_dumpr   r   r   r   Úyaml_anchor)   s
    zScalarString.yaml_anchorFc                 C   s   || j _|| j _d S r   )r    Úvaluer!   )r   r#   r!   r   r   r   Úyaml_set_anchor1   s    zScalarString.yaml_set_anchorN)r   )F)Ú__name__Ú
__module__Ú__qualname__r   r   Ú	__slots__r   r   Úpropertyr    r"   r$   r   r   r   r   r      s   

c                   @   s   e Zd ZdZdZdd„ ZdS )r	   Úcommentú|c                 C   s   t  | |¡S r   ©r   r   ©r   r#   r   r   r   r   <   s    zLiteralScalarString.__new__N©r%   r&   r'   r(   Zstyler   r   r   r   r   r	   7   s   c                   @   s   e Zd ZdZdZdd„ ZdS )r
   )Zfold_posr*   ú>c                 C   s   t  | |¡S r   r,   r-   r   r   r   r   I   s    zFoldedScalarString.__new__Nr.   r   r   r   r   r
   D   s   c                   @   s   e Zd ZdZdZdd„ ZdS )r   r   ú'c                 C   s   t  | |¡S r   r,   r-   r   r   r   r   S   s    z SingleQuotedScalarString.__new__Nr.   r   r   r   r   r   N   s   c                   @   s   e Zd ZdZdZdd„ ZdS )r   r   ú"c                 C   s   t  | |¡S r   r,   r-   r   r   r   r   ]   s    z DoubleQuotedScalarString.__new__Nr.   r   r   r   r   r   X   s   c                 C   s   t |  dd¡ dd¡ƒS )Nz
Ú
ú)r	   r   )Úsr   r   r   Úpreserve_literalb   s    r5   Nc           
      C   sÖ   ddl m}m}m} |dkr$dti}t| |ƒr|| D ]F}| | }t||ƒrp|D ] }||krL|| |ƒ| |<  qxqLq2t|ƒ q2nVt| |ƒrÒt| ƒD ]B\}}	t|	|ƒrÈ|D ] }||	kr¤|| |	ƒ| |<  qÐq¤qŽt|	ƒ qŽdS )a»  
    the routine here walks over a simple yaml tree (recursing in
    dict values and list items) and converts strings that
    have multiple lines to literal scalars

    You can also provide an explicit (ordered) mapping for multiple transforms
    (first of which is executed):
        map = ruamel_yaml.compat.ordereddict
        map['
'] = preserve_literal
        map[':'] = SingleQuotedScalarString
        walk_tree(data, map=map)
    r   )Ústring_typesÚMutableMappingÚMutableSequenceNr2   )Úruamel_yaml.compatr6   r7   r8   r5   Ú
isinstanceÚ	walk_treeÚ	enumerate)
ÚbaseÚmapr6   r7   r8   ÚkÚvZchÚidxÚelemr   r   r   r;   g   s(    



r;   )N)Z
__future__r   r   r   r   r9   r   Zruamel_yaml.anchorr   ZTextZAnyZDictZListÚ__all__r   r	   r   r
   r   r   r5   r;   r   r   r   r   Ú<module>   s"   ø 



