U
    å“r^þ§  ã                   @   sL   d dgZ ddlmZ ddlT G dd„ deƒZG dd„ dƒZG dd „ d ƒZd	S )
ÚEmitterÚEmitterErroré   )Ú	YAMLError)Ú*c                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r	   r	   ú./usr/lib/python3/dist-packages/yaml/emitter.pyr      s   c                   @   s   e Zd Zdd„ ZdS )ÚScalarAnalysisc	           	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S ©N©ÚscalarÚemptyÚ	multilineÚallow_flow_plainÚallow_block_plainÚallow_single_quotedÚallow_double_quotedÚallow_block)	Úselfr   r   r   r   r   r   r   r   r	   r	   r
   Ú__init__   s    zScalarAnalysis.__init__N)r   r   r   r   r	   r	   r	   r
   r      s   r   c                   @   s(  e Zd ZdddœZddd„Zdd„ Zd	d
„ Zdd„ Zdd„ ZdŽdd„Z	dd„ Z
dd„ Zdd„ Zddd„Zdd„ Zdd„ Zddd„Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd‘d8d9„Zd:d;„ Zd<d=„ Zd’d>d?„Z d@dA„ Z!dBdC„ Z"dDdE„ Z#dFdG„ Z$dHdI„ Z%dJdK„ Z&dLdM„ Z'dNdO„ Z(dPdQ„ Z)dRdS„ Z*dTdU„ Z+dVdW„ Z,dXdY„ Z-dZd[„ Z.d\d]„ Z/d^d_„ Z0d`da„ Z1dbdc„ Z2ddde„ Z3d“dfdg„Z4dhdi„ Z5d”djdk„Z6dldm„ Z7dndo„ Z8d•dqdr„Z9dsdtdudvdwdxdydzd{d|d}d~dd€dd‚œZ:d–dƒd„„Z;d…d†„ Z<d‡dˆ„ Z=d‰dŠ„ Z>d—d‹dŒ„Z?dS )˜r   ú!z!!)r   ztag:yaml.org,2002:Nc                 C   sö   || _ d | _g | _| j| _g | _d | _g | _d | _d| _	d| _
d| _d| _d| _d| _d| _d| _d| _d| _|| _|| _d| _|r¢d|  k r˜dk r¢n n|| _d| _|rÀ|| jd krÀ|| _d| _|d	krÔ|| _d | _d | _d | _d | _d | _d S )
Né    FTé   r   é
   éP   Ú
)úr   z
)ÚstreamÚencodingÚstatesÚexpect_stream_startÚstateÚeventsÚeventÚindentsÚindentÚ
flow_levelÚroot_contextÚsequence_contextÚmapping_contextÚsimple_key_contextÚlineÚcolumnÚ
whitespaceÚ	indentionÚ
open_endedÚ	canonicalÚallow_unicodeÚbest_indentÚ
best_widthÚbest_line_breakÚtag_prefixesÚprepared_anchorÚprepared_tagÚanalysisÚstyle)r   r   r2   r'   Úwidthr3   Z
line_breakr	   r	   r
   r   &   sD    zEmitter.__init__c                 C   s   g | _ d | _d S r   )r!   r#   ©r   r	   r	   r
   Údisposej   s    zEmitter.disposec                 C   s6   | j  |¡ |  ¡ s2| j  d¡| _|  ¡  d | _qd S ©Nr   )r$   ÚappendÚneed_more_eventsÚpopr%   r#   ©r   r%   r	   r	   r
   Úemito   s
    zEmitter.emitc                 C   sX   | j s
dS | j d }t|tƒr(|  d¡S t|tƒr<|  d¡S t|tƒrP|  d¡S dS d S )NTr   r   r   é   F)r$   Ú
isinstanceÚDocumentStartEventÚneed_eventsÚSequenceStartEventÚMappingStartEventrC   r	   r	   r
   rA   x   s    






zEmitter.need_more_eventsc                 C   sv   d}| j dd … D ]P}t|ttfƒr.|d7 }n&t|ttfƒrF|d8 }nt|tƒrTd}|dk r dS qt| j ƒ|d k S )Nr   r   éÿÿÿÿF)r$   rF   rG   ÚCollectionStartEventÚDocumentEndEventZCollectionEndEventÚStreamEndEventÚlen)r   ÚcountÚlevelr%   r	   r	   r
   rH   …   s    


zEmitter.need_eventsFc                 C   sF   | j  | j¡ | jd kr.|r&| j| _qBd| _n|sB|  j| j7  _d S r?   )r&   r@   r'   r4   )r   ÚflowÚ
indentlessr	   r	   r
   Úincrease_indent’   s    

zEmitter.increase_indentc                 C   sN   t | jtƒr<| jjr*t| jdƒs*| jj| _|  ¡  | j| _nt	d| j ƒ‚d S )Nr    z%expected StreamStartEvent, but got %s)
rF   r%   ZStreamStartEventr    Úhasattrr   Úwrite_stream_startÚexpect_first_document_startr#   r   r=   r	   r	   r
   r"       s    

ÿzEmitter.expect_stream_startc                 C   s   t d| j ƒ‚d S )Nzexpected nothing, but got %s)r   r%   r=   r	   r	   r
   Úexpect_nothingª   s    zEmitter.expect_nothingc                 C   s   | j ddS ©NT)Úfirst)Úexpect_document_startr=   r	   r	   r
   rW   ¯   s    z#Emitter.expect_first_document_startc           	      C   sr  t | jtƒr$| jjs| jjr8| jr8|  dd¡ |  ¡  | jjrX|  | jj¡}|  	|¡ | j
 ¡ | _| jjr¼t| jj ¡ ƒ}|D ]:}| jj| }|| j|< |  |¡}|  |¡}|  ||¡ q€|oî| jj oî| j oî| jj oî| jj oî|  ¡  }|s|  ¡  |  dd¡ | jr|  ¡  | j| _nJt | jtƒr`| jrN|  dd¡ |  ¡  |  ¡  | j| _ntd| j ƒ‚d S )Nú...Tú---z'expected DocumentStartEvent, but got %s)rF   r%   rG   ÚversionZtagsr1   Úwrite_indicatorÚwrite_indentÚprepare_versionÚwrite_version_directiveÚDEFAULT_TAG_PREFIXESÚcopyr7   ÚsortedÚkeysÚprepare_tag_handleÚprepare_tag_prefixÚwrite_tag_directiveÚexplicitr2   Úcheck_empty_documentÚexpect_document_rootr#   rN   Úwrite_stream_endrX   r   )	r   rZ   Úversion_textZhandlesÚhandleÚprefixÚhandle_textÚprefix_textÚimplicitr	   r	   r
   r[   ²   sL    



ÿÿþ

ÿzEmitter.expect_document_startc                 C   sT   t | jtƒrB|  ¡  | jjr0|  dd¡ |  ¡  |  ¡  | j| _nt	d| j ƒ‚d S )Nr\   Tz%expected DocumentEndEvent, but got %s)
rF   r%   rM   r`   rj   r_   Úflush_streamr[   r#   r   r=   r	   r	   r
   Úexpect_document_endÖ   s    
ÿzEmitter.expect_document_endc                 C   s   | j  | j¡ | jdd d S )NT)Úroot)r!   r@   ru   Úexpect_noder=   r	   r	   r
   rl   â   s    zEmitter.expect_document_rootc                 C   sð   || _ || _|| _|| _t| jtƒr.|  ¡  n¾t| jtt	fƒrÞ|  
d¡ |  ¡  t| jtƒrf|  ¡  qìt| jtƒr¢| jsŽ| jsŽ| jjsŽ|  ¡ r˜|  ¡  qÜ|  ¡  qìt| jtƒrì| jsÊ| jsÊ| jjsÊ|  ¡ rÔ|  ¡  qì|  ¡  ntd| j ƒ‚d S )Nú&zexpected NodeEvent, but got %s)r)   r*   r+   r,   rF   r%   Ú
AliasEventÚexpect_aliasÚScalarEventrL   Úprocess_anchorÚprocess_tagÚexpect_scalarrI   r(   r2   Z
flow_styleÚcheck_empty_sequenceÚexpect_flow_sequenceÚexpect_block_sequencerJ   Úcheck_empty_mappingÚexpect_flow_mappingÚexpect_block_mappingr   )r   rv   ÚsequenceÚmappingÚ
simple_keyr	   r	   r
   rw   è   s0    


ÿ

ÿ

zEmitter.expect_nodec                 C   s.   | j jd krtdƒ‚|  d¡ | j ¡ | _d S )Nz!anchor is not specified for aliasr   )r%   Úanchorr   r|   r!   rB   r#   r=   r	   r	   r
   rz     s    
zEmitter.expect_aliasc                 C   s0   | j dd |  ¡  | j ¡ | _| j ¡ | _d S )NT©rR   )rT   Úprocess_scalarr&   rB   r'   r!   r#   r=   r	   r	   r
   r~   
  s    zEmitter.expect_scalarc                 C   s6   | j dddd |  jd7  _| jdd | j| _d S )Nú[T©r/   r   r‰   )r_   r(   rT   Úexpect_first_flow_sequence_itemr#   r=   r	   r	   r
   r€     s    zEmitter.expect_flow_sequencec                 C   sx   t | jtƒr@| j ¡ | _|  jd8  _|  dd¡ | j ¡ | _	n4| j
sR| j| jkrZ|  ¡  | j | j¡ | jdd d S )Nr   ú]FT©r…   )rF   r%   ÚSequenceEndEventr&   rB   r'   r(   r_   r!   r#   r2   r.   r5   r`   r@   Úexpect_flow_sequence_itemrw   r=   r	   r	   r
   r     s    z'Emitter.expect_first_flow_sequence_itemc                 C   sž   t | jtƒrZ| j ¡ | _|  jd8  _| jr@|  dd¡ |  	¡  |  dd¡ | j
 ¡ | _n@|  dd¡ | jsx| j| jkr€|  	¡  | j
 | j¡ | jdd d S )Nr   ú,FrŽ   Tr   )rF   r%   r   r&   rB   r'   r(   r2   r_   r`   r!   r#   r.   r5   r@   r‘   rw   r=   r	   r	   r
   r‘   $  s    z!Emitter.expect_flow_sequence_itemc                 C   s6   | j dddd |  jd7  _| jdd | j| _d S )Nú{TrŒ   r   r‰   )r_   r(   rT   Úexpect_first_flow_mapping_keyr#   r=   r	   r	   r
   rƒ   6  s    zEmitter.expect_flow_mappingc                 C   s°   t | jtƒr@| j ¡ | _|  jd8  _|  dd¡ | j ¡ | _	nl| j
sR| j| jkrZ|  ¡  | j
s†|  ¡ r†| j | j¡ | jddd n&|  dd¡ | j | j¡ | jdd d S )Nr   ú}FT©r†   r‡   ú?©r†   )rF   r%   ÚMappingEndEventr&   rB   r'   r(   r_   r!   r#   r2   r.   r5   r`   Úcheck_simple_keyr@   Ú expect_flow_mapping_simple_valuerw   Úexpect_flow_mapping_valuer=   r	   r	   r
   r”   <  s    z%Emitter.expect_first_flow_mapping_keyc                 C   sÖ   t | jtƒrZ| j ¡ | _|  jd8  _| jr@|  dd¡ |  	¡  |  dd¡ | j
 ¡ | _nx|  dd¡ | jsx| j| jkr€|  	¡  | js¬|  ¡ r¬| j
 | j¡ | jddd n&|  dd¡ | j
 | j¡ | jdd d S )	Nr   r’   Fr•   Tr–   r—   r˜   )rF   r%   r™   r&   rB   r'   r(   r2   r_   r`   r!   r#   r.   r5   rš   r@   r›   rw   rœ   r=   r	   r	   r
   Úexpect_flow_mapping_keyM  s"    zEmitter.expect_flow_mapping_keyc                 C   s*   |   dd¡ | j | j¡ | jdd d S ©Nú:FTr˜   )r_   r!   r@   r   rw   r=   r	   r	   r
   r›   b  s    z(Emitter.expect_flow_mapping_simple_valuec                 C   sD   | j s| j| jkr|  ¡  |  dd¡ | j | j¡ | jdd d S )NrŸ   Tr˜   )	r2   r.   r5   r`   r_   r!   r@   r   rw   r=   r	   r	   r
   rœ   g  s
    z!Emitter.expect_flow_mapping_valuec                 C   s(   | j o| j }| jd|d | j| _d S )NF)rR   rS   )r+   r0   rT   Ú expect_first_block_sequence_itemr#   )r   rS   r	   r	   r
   r   p  s    zEmitter.expect_block_sequencec                 C   s   | j ddS rY   )Úexpect_block_sequence_itemr=   r	   r	   r
   r    u  s    z(Emitter.expect_first_block_sequence_itemc                 C   s`   |s*t | jtƒr*| j ¡ | _| j ¡ | _n2|  ¡  | j	dddd | j 
| j¡ | jdd d S )Nú-T©r0   r   )rF   r%   r   r&   rB   r'   r!   r#   r`   r_   r@   r¡   rw   ©r   rZ   r	   r	   r
   r¡   x  s    z"Emitter.expect_block_sequence_itemc                 C   s   | j dd | j| _d S )NFr‰   )rT   Úexpect_first_block_mapping_keyr#   r=   r	   r	   r
   r„   „  s    zEmitter.expect_block_mappingc                 C   s   | j ddS rY   )Úexpect_block_mapping_keyr=   r	   r	   r
   r¥   ˆ  s    z&Emitter.expect_first_block_mapping_keyc                 C   s†   |s*t | jtƒr*| j ¡ | _| j ¡ | _nX|  ¡  |  	¡ rX| j 
| j¡ | jddd n*| jdddd | j 
| j¡ | jdd d S )NTr–   r—   r£   r˜   )rF   r%   r™   r&   rB   r'   r!   r#   r`   rš   r@   Ú!expect_block_mapping_simple_valuerw   r_   Úexpect_block_mapping_valuer¤   r	   r	   r
   r¦   ‹  s    z Emitter.expect_block_mapping_keyc                 C   s*   |   dd¡ | j | j¡ | jdd d S rž   )r_   r!   r@   r¦   rw   r=   r	   r	   r
   r§   ™  s    z)Emitter.expect_block_mapping_simple_valuec                 C   s6   |   ¡  | jdddd | j | j¡ | jdd d S )NrŸ   Tr£   r˜   )r`   r_   r!   r@   r¦   rw   r=   r	   r	   r
   r¨   ž  s    z"Emitter.expect_block_mapping_valuec                 C   s"   t | jtƒo | jo t | jd tƒS r?   )rF   r%   rI   r$   r   r=   r	   r	   r
   r   ¦  s    ÿzEmitter.check_empty_sequencec                 C   s"   t | jtƒo | jo t | jd tƒS r?   )rF   r%   rJ   r$   r™   r=   r	   r	   r
   r‚   ª  s    ÿzEmitter.check_empty_mappingc                 C   sN   t | jtƒr| jsdS | jd }t |tƒoL|jd koL|jd koL|joL|jdkS )NFr   Ú )	rF   r%   rG   r$   r{   rˆ   Útagrs   ÚvaluerC   r	   r	   r
   rk   ®  s    
ÿÿÿzEmitter.check_empty_documentc                 C   s
  d}t | jtƒrD| jjd k	rD| jd kr6|  | jj¡| _|t| jƒ7 }t | jttfƒrˆ| jj	d k	rˆ| j
d krz|  | jj	¡| _
|t| j
ƒ7 }t | jtƒr¾| jd kr®|  | jj¡| _|t| jjƒ7 }|dk ot | jtƒpt | jtƒrø| jj rø| jj p|  ¡ p|  ¡ S )Nr   é€   )rF   r%   Z	NodeEventrˆ   r8   Úprepare_anchorrO   r{   rL   rª   r9   Úprepare_tagr:   Úanalyze_scalarr«   r   ry   r   r   r   r‚   )r   Zlengthr	   r	   r
   rš   µ  s2    

ÿ

ÿþýýzEmitter.check_simple_keyc                 C   sR   | j jd krd | _d S | jd kr0|  | j j¡| _| jrH|  || j d¡ d | _d S )NT)r%   rˆ   r8   r­   r_   )r   Ú	indicatorr	   r	   r
   r|   Ë  s    
zEmitter.process_anchorc                 C   sð   | j j}t| j tƒrŒ| jd kr(|  ¡ | _| jr6|d krl| jdkrL| j jd sb| jdkrl| j jd rld | _d S | j jd r¬|d kr¬d}d | _n | jrš|d kr¬| j jr¬d | _d S |d kr¼t	dƒ‚| jd krÒ|  
|¡| _| jræ|  | jd¡ d | _d S )Nr©   r   r   r   ztag is not specifiedT)r%   rª   rF   r{   r;   Úchoose_scalar_styler2   rs   r9   r   r®   r_   )r   rª   r	   r	   r
   r}   Õ  s8    

ÿ
ÿþ
þ
zEmitter.process_tagc                 C   sÜ   | j d kr|  | jj¡| _ | jjdks,| jr0dS | jjsz| jjd rz| jrZ| j jsz| j j	sz| j
rh| j jsv| j
sz| j jrzdS | jjrª| jjdkrª| j
sª| jsª| j jrª| jjS | jjr¾| jjdkrØ| j jrØ| jrÔ| j j	sØdS dS )Nú"r   r©   z|>ú')r:   r¯   r%   r«   r;   r2   rs   r,   r   r   r(   r   r   r   r   r=   r	   r	   r
   r±   î  s@    
ÿÿþþýýÿÿÿzEmitter.choose_scalar_stylec                 C   sÂ   | j d kr|  | jj¡| _ | jd kr.|  ¡ | _| j }| jdkrR|  | j j|¡ n`| jdkrn|  	| j j|¡ nD| jdkrˆ|  
| j j¡ n*| jdkr¢|  | j j¡ n|  | j j|¡ d | _ d | _d S )Nr²   r³   ú>ú|)r:   r¯   r%   r«   r;   r±   r,   Úwrite_double_quotedr   Úwrite_single_quotedÚwrite_foldedÚwrite_literalÚwrite_plain)r   Úsplitr	   r	   r
   rŠ     s     






zEmitter.process_scalarc                 C   s,   |\}}|dkr t d||f ƒ‚d||f S )Nr   zunsupported YAML version: %d.%dz%d.%d©r   )r   r^   ÚmajorÚminorr	   r	   r
   ra     s    zEmitter.prepare_versionc                 C   s    |st dƒ‚|d dks$|d dkr0t d| ƒ‚|dd… D ]^}d|  krTdks<n d	|  krjd
ks<n d|  kr€dks<n |dks<t d||f ƒ‚q<|S )Nztag handle must not be emptyr   r   rK   z*tag handle must start and end with '!': %rr   Ú0Ú9ÚAÚZÚaÚzú-_z*invalid character %r in the tag handle: %rr¼   )r   ro   Úchr	   r	   r
   rg   !  s    BÿÿzEmitter.prepare_tag_handlec                 C   s  |st dƒ‚g }d }}|d dkr(d}|t|ƒk rÞ|| }d|  krPdks†n d|  krfdks†n d	|  kr|d
ks†n |dkr|d7 }q(||k rª| |||… ¡ |d  }}| d¡}|D ]}| dt|ƒ ¡ qÄq(||k rø| |||… ¡ d |¡S )Nztag prefix must not be emptyr   r   r   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   z-;/?!:@&=+$,_.~*'()[]úutf-8ú%%%02Xr©   )r   rO   r@   ÚencodeÚordÚjoin)r   rp   ÚchunksÚstartÚendrÆ   Údatar	   r	   r
   rh   -  s*    Bÿ

zEmitter.prepare_tag_prefixc                 C   sŒ  |st dƒ‚|dkr|S d }|}t| j ¡ ƒ}|D ]@}| |¡r2|dksXt|ƒt|ƒk r2| j| }|t|ƒd … }q2g }d }}|t|ƒk rH|| }	d|	  krªdksðn d|	  krÀdksðn d|	  krÖd	ksðn |	d
ksð|	dkrú|dkrú|d7 }q€||k r| |||… ¡ |d  }}|	 d¡}
|
D ]}	| d|	 ¡ q0q€||k rd| |||… ¡ d |¡}|r€d||f S d| S d S )Nztag must not be emptyr   r   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   z-;/?:@&=+$,_.~*'()[]r   rÇ   rÈ   r©   z%s%sz!<%s>)	r   re   r7   rf   Ú
startswithrO   r@   rÉ   rË   )r   rª   ro   ÚsuffixÚprefixesrp   rÌ   rÍ   rÎ   rÆ   rÏ   Zsuffix_textr	   r	   r
   r®   D  sN    
ÿÿ
Bÿþþ




zEmitter.prepare_tagc                 C   st   |st dƒ‚|D ]^}d|  kr(dksn d|  kr>dksn d|  krTdksn |dkst d	||f ƒ‚q|S )
Nzanchor must not be emptyr¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   z&invalid character %r in the anchor: %rr¼   )r   rˆ   rÆ   r	   r	   r
   r­   h  s    BÿÿzEmitter.prepare_anchorc              
   C   s.  |st |ddddddddS d}d}d}d}d}d}d}d}	d}
d}| d¡sX| d¡r`d}d}d}t|ƒdkpz|d dk}d}d}d}|t|ƒk rˆ|| }|dkrà|d	kr¶d}d}|d
krÊd}|rÊd}|dkrÞ|rÞd}d}n<|dkrìd}|dkrd}|rd}|dkr|rd}d}|dkr*d}|dksÈd|  krLdksÈn |dks¨d|  krpdks¨n d|  krŠdks¨n d|  kr¤dk rÄn n|dkrÄd}| jsÈd}nd}|dkr
|dkràd}|t|ƒd kröd}|r d}
d}d}nJ|dkrL|dkr"d}|t|ƒd kr8d}	|rBd}d}d}nd}d}|d7 }|dk}|d t|ƒkp„||d  dk}qˆd}d}d}d}d}|s´|s´|s´|	r¼d }}|rÆd}|
rØd } }}|sä|rôd } } }}|rd }}|rd}|rd}t |d||||||dS )NTFr   r]   r\   r   u     	
Â…â€¨â€©r   z#,[]{}&*!|>'"%@`z?:r¢   z,?[]{}rŸ   ú#õ	   
Â…â€¨â€©r   ú ú~õ   Â…õ   Â õ   íŸ¿õ   î€€õ   ï¿½u   ð€€u   ô¿¿õ   ï»¿)r   rÐ   rO   r3   )r   r   Zblock_indicatorsZflow_indicatorsZline_breaksZspecial_charactersÚleading_spaceZleading_breakZtrailing_spaceZtrailing_breakZbreak_spaceZspace_breakZpreceded_by_whitespaceZfollowed_by_whitespaceZprevious_spaceZprevious_breakÚindexrÆ   Zunicode_charactersr   r   r   r   r   r	   r	   r
   r¯   r  s     ý
ÿ

$$ ÿ
ÿ
 þ
þþ



ÿÿÿÿ
  úzEmitter.analyze_scalarc                 C   s   t | jdƒr| j ¡  d S )NÚflush)rU   r   rß   r=   r	   r	   r
   rt     s    zEmitter.flush_streamc                 C   s*   | j r&| j  d¡r&| j d | j ¡¡ d S )Nzutf-16rÜ   )r    rÐ   r   ÚwriterÉ   r=   r	   r	   r
   rV     s    zEmitter.write_stream_startc                 C   s   |   ¡  d S r   )rt   r=   r	   r	   r
   rm     s    zEmitter.write_stream_endc                 C   sd   | j s
|s|}nd| }|| _ | jo&|| _|  jt|ƒ7  _d| _| jrT| | j¡}| j |¡ d S )NrÕ   F)	r/   r0   r.   rO   r1   r    rÉ   r   rà   )r   r°   Zneed_whitespacer/   r0   rÏ   r	   r	   r
   r_      s    
zEmitter.write_indicatorc                 C   sx   | j pd}| jr*| j|ks*| j|kr2| js2|  ¡  | j|k rtd| _d|| j  }|| _| jrh| | j¡}| j |¡ d S )Nr   TrÕ   )	r'   r0   r.   r/   Úwrite_line_breakr    rÉ   r   rà   )r   r'   rÏ   r	   r	   r
   r`   .  s    
ÿÿ
zEmitter.write_indentc                 C   sP   |d kr| j }d| _d| _|  jd7  _d| _| jr@| | j¡}| j |¡ d S )NTr   r   )	r6   r/   r0   r-   r.   r    rÉ   r   rà   )r   rÏ   r	   r	   r
   rá   ;  s    zEmitter.write_line_breakc                 C   s2   d| }| j r| | j ¡}| j |¡ |  ¡  d S )Nz	%%YAML %s©r    rÉ   r   rà   rá   )r   rn   rÏ   r	   r	   r
   rb   F  s
    zEmitter.write_version_directivec                 C   s6   d||f }| j r| | j ¡}| j |¡ |  ¡  d S )Nz%%TAG %s %srâ   )r   rq   rr   rÏ   r	   r	   r
   ri   M  s
    zEmitter.write_tag_directiveTc           
      C   s   |   dd¡ d}d}d }}|t|ƒkrd }|t|ƒk rB|| }|rÒ|d ksV|dkrÐ|d |kr| j| jkr|r|dkr|t|ƒkr|  ¡  n<|||… }|  jt|ƒ7  _| jrÀ| | j¡}| j |¡ |}nÖ|r>|d ksê|dkr¨|| dkrþ|  	¡  |||… D ]$}	|	dkr"|  	¡  n
|  	|	¡ q
|  ¡  |}nj|d ks\|d	ks\|dkr¨||k r¨|||… }|  jt|ƒ7  _| jr˜| | j¡}| j |¡ |}|dkrìd
}|  jd7  _| jrØ| | j¡}| j |¡ |d }|d k	r|dk}|dk}|d7 }q|   dd¡ d S )Nr³   TFr   rÕ   r   rÔ   r   õ
    
Â…â€¨â€©z''r   )
r_   rO   r.   r5   r`   r    rÉ   r   rà   rá   )
r   Útextr»   ÚspacesÚbreaksrÍ   rÎ   rÆ   rÏ   Úbrr	   r	   r
   r·   V  sh    ÿ
ÿ






zEmitter.write_single_quotedr¿   rÃ   ÚbÚtÚnÚvÚfÚrÚer²   ú\ÚNÚ_ÚLÚP)ú úúú	r   úúr   úr²   rï   r×   rØ   u   â€¨u   â€©c                 C   s’  |   dd¡ d }}|t|ƒkr‚d }|t|ƒk r:|| }|d ks˜|dks˜d|  kr`dks|n | jr˜d|  kr~dks|n d	|  kr–d
ks|n ||k rà|||… }|  jt|ƒ7  _| jrÐ| | j¡}| j |¡ |}|d k	r||| jkrd| j|  }n<|dkrdt	|ƒ }n$|dkr6dt	|ƒ }ndt	|ƒ }|  jt|ƒ7  _| jrh| | j¡}| j |¡ |d }d|  k rœt|ƒd k rxn nØ|dks´||krx| j||  | j
krx|rx|||… d }||k rî|}|  jt|ƒ7  _| jr| | j¡}| j |¡ |  ¡  d| _d| _|| dkrxd}|  jt|ƒ7  _| jrl| | j¡}| j |¡ |d7 }q|   dd¡ d S )Nr²   Tr   u   "\Â…â€¨â€©ï»¿rÕ   rÖ   rØ   rÙ   rÚ   rÛ   rï   õ   Ã¿z\x%02Xu   ï¿¿z\u%04Xz\U%08Xr   F)r_   rO   r3   r.   r    rÉ   r   rà   ÚESCAPE_REPLACEMENTSrÊ   r5   r`   r/   r0   )r   rä   r»   rÍ   rÎ   rÆ   rÏ   r	   r	   r
   r¶   ž  s†     ÿÿ
þ ýý
 üü



8ÿÿ

zEmitter.write_double_quotedc                 C   s\   d}|rX|d dkr"|t | jƒ7 }|d dkr8|d7 }n t|ƒdksP|d dkrX|d	7 }|S )
Nr©   r   rã   rK   rÔ   r¢   r   éþÿÿÿú+)Ústrr4   rO   )r   rä   Úhintsr	   r	   r
   Údetermine_block_hintsÔ  s    
zEmitter.determine_block_hintsc                 C   s  |   |¡}|  d| d¡ |dd … dkr0d| _|  ¡  d}d}d}d }}|t|ƒkr d }|t|ƒk rr|| }|rú|d ks†|dkrø|s®|d k	r®|dkr®|| d	kr®|  ¡  |dk}|||… D ] }	|	d	krØ|  ¡  qÂ|  |	¡ qÂ|d k	rô|  ¡  |}nâ|rt|dkrÜ|d
 |kr0| j| jkr0|  ¡  n>|||… }
|  jt|
ƒ7  _| jrb|
 	| j¡}
| j
 |
¡ |}nh|d ksˆ|dkrÜ|||… }
|  jt|
ƒ7  _| jrº|
 	| j¡}
| j
 |
¡ |d krØ|  ¡  |}|d k	rö|dk}|dk}|d
7 }qLd S )Nr´   TrK   rþ   Fr   rÔ   rÕ   r   r   rã   )r  r_   r1   rá   rO   r`   r.   r5   r    rÉ   r   rà   )r   rä   r   rÝ   rå   ræ   rÍ   rÎ   rÆ   rç   rÏ   r	   r	   r
   r¸   ß  sd    

ÿ




zEmitter.write_foldedc           	      C   s4  |   |¡}|  d| d¡ |dd … dkr0d| _|  ¡  d}d }}|t|ƒkr0d }|t|ƒk rj|| }|rÂ|d ks~|dkrÀ|||… D ] }|dkr |  ¡  qŠ|  |¡ qŠ|d k	r¼|  ¡  |}nR|d ksÔ|dkr|||… }| jrò| | j¡}| j 	|¡ |d kr|  ¡  |}|d k	r&|dk}|d7 }qDd S )	Nrµ   TrK   rþ   r   rÔ   r   r   )
r  r_   r1   rá   rO   r`   r    rÉ   r   rà   )	r   rä   r   ræ   rÍ   rÎ   rÆ   rç   rÏ   r	   r	   r
   r¹     s>    



zEmitter.write_literalc           
      C   s  | j rd| _|sd S | jsNd}|  jt|ƒ7  _| jrB| | j¡}| j |¡ d| _d| _	d}d}d }}|t|ƒkrd }|t|ƒk r|| }|r|dkrÞ|d |krÒ| j| j
krÒ|rÒ|  ¡  d| _d| _	n>|||… }|  jt|ƒ7  _| jr| | j¡}| j |¡ |}nÈ|rˆ|dkrÞ|| dkr<|  ¡  |||… D ]$}	|	dkr`|  ¡  n
|  |	¡ qH|  ¡  d| _d| _	|}nV|d ksœ|dkrÞ|||… }|  jt|ƒ7  _| jrÎ| | j¡}| j |¡ |}|d k	rø|dk}|dk}|d7 }qjd S )	NTrÕ   Fr   r   rÔ   r   rã   )r)   r1   r/   r.   rO   r    rÉ   r   rà   r0   r5   r`   rá   )
r   rä   r»   rÏ   rå   ræ   rÍ   rÎ   rÆ   rç   r	   r	   r
   rº   8  sl    




zEmitter.write_plain)NNNNN)FF)F)FFFF)F)F)FF)N)T)T)T)@r   r   r   rc   r   r>   rD   rA   rH   rT   r"   rX   rW   r[   ru   rl   rw   rz   r~   r€   r   r‘   rƒ   r”   r   r›   rœ   r   r    r¡   r„   r¥   r¦   r§   r¨   r   r‚   rk   rš   r|   r}   r±   rŠ   ra   rg   rh   r®   r­   r¯   rt   rV   rm   r_   r`   rá   rb   ri   r·   rü   r¶   r  r¸   r¹   rº   r	   r	   r	   r
   r      s¬   þ    ÿ
D	


$  ÿ
	


$
 #   ÿ

	
7ñ
66#N)Ú__all__Úerrorr   r$   r   r   r   r	   r	   r	   r
   Ú<module>	   s
   