B
    ë¹`þ§  ã               @   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	   úT/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-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   r0   r%   Úwidthr1   Z
line_breakr	   r	   r
   r   &   sD    zEmitter.__init__c             C   s   g | _ d | _d S )N)r   r!   )r   r	   r	   r
   Údisposej   s    zEmitter.disposec             C   s:   | j  |¡ x(|  ¡ s4| j  d¡| _|  ¡  d | _qW 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ÚMappingStartEvent)r   r#   r	   r	   r
   r=   x   s    






zEmitter.need_more_eventsc             C   sx   d}x`| j dd … D ]N}t|ttfƒr0|d7 }n&t|ttfƒrH|d8 }nt|tƒrVd}|dk rdS qW t| j ƒ|d k S )Nr   r   éÿÿÿÿF)r"   rA   rB   ÚCollectionStartEventÚDocumentEndEventZCollectionEndEventÚStreamEndEventÚlen)r   ÚcountÚlevelr#   r	   r	   r
   rC   …   s    


zEmitter.need_eventsFc             C   sF   | j  | j¡ | jd kr.|r&| j| _qBd| _n|sB|  j| j7  _d S )Nr   )r$   r<   r%   r2   )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)
rA   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_start)r   r	   r	   r
   rR   ¯   s    z#Emitter.expect_first_document_startc       	      C   sv  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 ¡ ƒ}xB|D ]:}| jj| }|| j|< |  |¡}|  |¡}|  ||¡ q‚W |oò| jj oò| j oò| jj oò| jj oò|  ¡  }|s|  ¡  |  dd¡ | jr|  ¡  | j| _nJt | jtƒrd| jrR|  dd¡ |  ¡  |  ¡  | j| _ntd| j ƒ‚d S )Nz...Tz---z'expected DocumentStartEvent, but got %s)rA   r#   rB   ÚversionÚtagsr/   Úwrite_indicatorÚwrite_indentÚprepare_versionÚwrite_version_directiveÚDEFAULT_TAG_PREFIXESÚcopyr5   ÚsortedÚkeysÚprepare_tag_handleÚprepare_tag_prefixÚwrite_tag_directiveÚexplicitr0   Úcheck_empty_documentÚexpect_document_rootr!   rI   Úwrite_stream_endrS   r   )	r   rT   Úversion_textZhandlesÚhandleÚprefixÚhandle_textÚprefix_textÚimplicitr	   r	   r
   rU   ²   sB    







zEmitter.expect_document_startc             C   sT   t | jtƒrB|  ¡  | jjr0|  dd¡ |  ¡  |  ¡  | j| _nt	d| j ƒ‚d S )Nz...Tz%expected DocumentEndEvent, but got %s)
rA   r#   rH   rY   rc   rX   Úflush_streamrU   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<   rn   Úexpect_node)r   r	   r	   r
   re   â   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*   rA   r#   Ú
AliasEventÚexpect_aliasÚScalarEventrG   Úprocess_anchorÚprocess_tagÚexpect_scalarrD   r&   r0   Z
flow_styleÚcheck_empty_sequenceÚexpect_flow_sequenceÚexpect_block_sequencerE   Úcheck_empty_mappingÚexpect_flow_mappingÚexpect_block_mappingr   )r   ro   ÚsequenceÚmappingÚ
simple_keyr	   r	   r
   rp   è   s,    






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   ru   r   r>   r!   )r   r	   r	   r
   rs     s    
zEmitter.expect_aliasc             C   s0   | j dd |  ¡  | j ¡ | _| j ¡ | _d S )NT)rM   )rO   Úprocess_scalarr$   r>   r%   r   r!   )r   r	   r	   r
   rw   
  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   )rM   )rX   r&   rO   Úexpect_first_flow_sequence_itemr!   )r   r	   r	   r
   ry     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~   )rA   r#   ÚSequenceEndEventr$   r>   r%   r&   rX   r   r!   r0   r,   r3   rY   r<   Úexpect_flow_sequence_itemrp   )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…   T)r~   )rA   r#   r†   r$   r>   r%   r&   r0   rX   rY   r   r!   r,   r3   r<   r‡   rp   )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Ú{T)r-   r   )rM   )rX   r&   rO   Ú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   )rA   r#   ÚMappingEndEventr$   r>   r%   r&   rX   r   r!   r0   r,   r3   rY   Úcheck_simple_keyr<   Ú expect_flow_mapping_simple_valuerp   Úexpect_flow_mapping_value)r   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‹   T)r   r€   rŒ   )r   )rA   r#   r   r$   r>   r%   r&   r0   rX   rY   r   r!   r,   r3   rŽ   r<   r   rp   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ú:FT)r   )rX   r   r<   r‘   rp   )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’   T)r   )	r0   r,   r3   rY   rX   r   r<   r‘   rp   )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)rM   rN   )r)   r.   rO   Ú expect_first_block_sequence_itemr!   )r   rN   r	   r	   r
   rz   p  s    zEmitter.expect_block_sequencec             C   s   | j ddS )NT)rT   )Úexpect_block_sequence_item)r   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)r.   )r~   )rA   r#   r†   r$   r>   r%   r   r!   rY   rX   r<   r”   rp   )r   rT   r	   r	   r
   r”   x  s    z"Emitter.expect_block_sequence_itemc             C   s   | j dd | j| _d S )NF)rM   )rO   Úexpect_first_block_mapping_keyr!   )r   r	   r	   r
   r}   „  s    zEmitter.expect_block_mappingc             C   s   | j ddS )NT)rT   )Úexpect_block_mapping_key)r   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 )NT)r   r€   rŒ   )r.   )r   )rA   r#   r   r$   r>   r%   r   r!   rY   rŽ   r<   Ú!expect_block_mapping_simple_valuerp   rX   Úexpect_block_mapping_value)r   rT   r	   r	   r
   r—   ‹  s    z Emitter.expect_block_mapping_keyc             C   s*   |   dd¡ | j | j¡ | jdd d S )Nr’   FT)r   )rX   r   r<   r—   rp   )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’   T)r.   )r   )rY   rX   r   r<   r—   rp   )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 )Nr   )rA   r#   rD   r"   r†   )r   r	   r	   r
   rx   ¦  s    zEmitter.check_empty_sequencec             C   s"   t | jtƒo | jo t | jd tƒS )Nr   )rA   r#   rE   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   Ú )	rA   r#   rB   r"   rt   r   Útagrl   Úvalue)r   r#   r	   r	   r
   rd   ®  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   é€   )rA   r#   Z	NodeEventr   r6   Úprepare_anchorrJ   rt   rG   r›   r7   Úprepare_tagr8   Úanalyze_scalarrœ   r   rr   r   r   rx   r{   )r   Úlengthr	   r	   r
   rŽ   µ  s$    


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   r6   rž   rX   )r   Ú	indicatorr	   r	   r
   ru   Ë  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›   rA   rt   r9   Úchoose_scalar_styler0   rl   r7   r   rŸ   rX   )r   r›   r	   r	   r
   rv   Õ  s,    


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|>ú')r8   r    r#   rœ   r9   r0   rl   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¥   ú>ú|)r8   r    r#   rœ   r9   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   rV   ÚmajorÚminorr	   r	   r
   rZ     s    zEmitter.prepare_versionc             C   s¤   |st dƒ‚|d dks$|d dkr0t d| ƒ‚xn|dd… D ]^}d|  krVdks>n d	|  krld
ks>n d|  kr‚dks>n |dks>t d||f ƒ‚q>W |S )Nztag handle must not be emptyr   r   rF   z*tag handle must start and end with '!': %rr   Ú0Ú9ÚAÚZÚaÚzz-_z*invalid character %r in the tag handle: %r)r   )r   rh   Úchr	   r	   r
   r`   !  s    BzEmitter.prepare_tag_handlec             C   s  |st dƒ‚g }d }}|d dkr(d}x¼|t|ƒk rä|| }d|  krRdksˆn d|  krhdksˆn d	|  kr~d
ksˆn |dkr’|d7 }q*||k r¬| |||… ¡ |d  }}| d¡}x|D ]}| dt|ƒ ¡ qÈW q*W ||k r| |||… ¡ d |¡S )Nztag prefix must not be emptyr   r   r   r°   r±   r²   r³   r´   rµ   z-;/?!:@&=+$,_.~*'()[]zutf-8z%%%02Xrš   )r   rJ   r<   ÚencodeÚordÚjoin)r   ri   ÚchunksÚstartÚendr¶   Údatar	   r	   r
   ra   -  s(    B



zEmitter.prepare_tag_prefixc             C   sœ  |st dƒ‚|dkr|S d }|}t| j ¡ ƒ}xH|D ]@}| |¡r4|dksZt|ƒt|ƒk r4| j| }|t|ƒd … }q4W g }d }}xÒ|t|ƒk rV|| }	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¡}
x|
D ]}	| d|	 ¡ q<W q†W ||k rt| |||… ¡ d |¡}|rd||f S d| S d S )Nztag must not be emptyr   r   r°   r±   r²   r³   r´   rµ   z-;/?:@&=+$,_.~*'()[]r   zutf-8z%%%02Xrš   z%s%sz!<%s>)	r   r^   r5   r_   Ú
startswithrJ   r<   r·   r¹   )r   r›   rh   ÚsuffixÚprefixesri   rº   r»   r¼   r¶   r½   Zsuffix_textr	   r	   r
   rŸ   D  s@    


B





zEmitter.prepare_tagc             C   sx   |st dƒ‚xf|D ]^}d|  kr*dksn d|  kr@dksn d|  krVdksn |dkst d	||f ƒ‚qW |S )
Nzanchor must not be emptyr°   r±   r²   r³   r´   rµ   z-_z&invalid character %r in the anchor: %r)r   )r   r   r¶   r	   r	   r
   rž   h  s    
BzEmitter.prepare_anchorc          
   C   s4  |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}x|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rPdksÌn |dks¬d|  krtd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rP|dkr&d}|t|ƒd kr<d}	|rFd}d}d}nd}d}|d7 }|dk}|d t|ƒkpˆ||d  dk}qŒW 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 )NTF)r   r   r   r   r   r   r   r   z---z...r   u     	
Â…â€¨â€©r   z#,[]{}&*!|>'"%@`z?:r•   z,?[]{}r’   ú#u	   
Â…â€¨â€©r   ú ú~õ   Â…õ   Â u   íŸ¿u   î€€u   ï¿½u   ð€€u   ô¿¿u   ï»¿)r   r¾   rJ   r1   )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)rP   r   rÈ   )r   r	   r	   r
   rm     s    zEmitter.flush_streamc             C   s*   | j r&| j  d¡r&| j d | j ¡¡ d S )Nzutf-16u   ï»¿)r   r¾   r   Úwriter·   )r   r	   r	   r
   rQ     s    zEmitter.write_stream_startc             C   s   |   ¡  d S )N)rm   )r   r	   r	   r
   rf     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-   r.   r,   rJ   r/   r   r·   r   rÉ   )r   r¢   Zneed_whitespacer-   r.   r½   r	   r	   r
   rX      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%   r.   r,   r-   Úwrite_line_breakr   r·   r   rÉ   )r   r%   r½   r	   r	   r
   rY   .  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   )	r4   r-   r.   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   rg   r½   r	   r	   r
   r[   F  s
    zEmitter.write_version_directivec             C   s6   d||f }| j r| | j ¡}| j |¡ |  ¡  d S )Nz%%TAG %s %s)r   r·   r   rÉ   rÊ   )r   rj   rk   r½   r	   r	   r
   rb   M  s
    zEmitter.write_tag_directiveTc       
      C   s,  |   dd¡ d}d}d }}xü|t|ƒkrd }|t|ƒk rF|| }|rÖ|d ksZ|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Ü|rH|d ksî|dkr²|| dkr|  	¡  x4|||… D ]$}	|	dkr*|  	¡  n
|  	|	¡ qW |  ¡  |}nj|d ksf|d	ksf|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 W |   dd¡ d S )Nr¥   TFr   rÂ   r   u	   
Â…â€¨â€©r   u
    
Â…â€¨â€©z''r   )
rX   rJ   r,   r3   rY   r   r·   r   rÉ   rÊ   )
r   Útextr­   ÚspacesÚbreaksr»   r¼   r¶   r½   Úbrr	   r	   r
   r©   V  sb    





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 }}xp|t|ƒkr†d }|t|ƒk r>|| }|d ksœ|dksœd|  krdd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r:dt	|ƒ }ndt	|ƒ }|  jt|ƒ7  _| jrl| | j¡}| j |¡ |d }d|  k r t|ƒd k r|n nØ|dks¸||kr|| j||  | j
kr||r||||… d }||k rò|}|  jt|ƒ7  _| jr| | j¡}| j |¡ |  ¡  d| _d| _|| dkr|d}|  jt|ƒ7  _| jrp| | j¡}| j |¡ |d7 }qW |   dd¡ d S )Nr¤   Tr   u   "\Â…â€¨â€©ï»¿rÂ   rÃ   rÅ   u   íŸ¿u   î€€u   ï¿½rÖ   õ   Ã¿z\x%02Xu   ï¿¿z\u%04Xz\U%08Xr   F)rX   rJ   r1   r,   r   r·   r   rÉ   ÚESCAPE_REPLACEMENTSr¸   r3   rY   r-   r.   )r   rË   r­   r»   r¼   r¶   r½   r	   r	   r
   r¨   ž  sf    


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   u
    
Â…â€¨â€©rF   u	   
Â…â€¨â€©r•   r   éþÿÿÿú+)Ústrr2   rJ   )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 }}xÀ|t|ƒkrd }|t|ƒk rv|| }|r|d ksŽ|dkrê|s¶|d k	r¶|dkr¶|| d	kr¶|  ¡  |dk}x0|||… D ] }	|	d	krâ|  ¡  qÌ|  |	¡ qÌW |d k	r|  ¡  |}nâ|r‚|dkrê|d
 |kr>| j| jkr>|  ¡  n>|||… }
|  jt|
ƒ7  _| jrp|
 	| 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 }qPW d S )Nr¦   TrF   rå   Fr   u	   
Â…â€¨â€©rÂ   r   r   u
    
Â…â€¨â€©)rè   rX   r/   rÊ   rJ   rY   r,   r3   r   r·   r   rÉ   )r   rË   rç   rÆ   rÌ   rÍ   r»   r¼   r¶   rÎ   r½   r	   r	   r
   rª   ß  sb    






zEmitter.write_foldedc       	      C   s<  |   |¡}|  d| d¡ |dd … dkr0d| _|  ¡  d}d }}xò|t|ƒkr6d }|t|ƒk rl|| }|rÈ|d ks€|dkrÆx0|||… D ] }|dkr¤|  ¡  qŽ|  |¡ qŽW |d k	rÂ|  ¡  |}nR|d ksÚ|dkr|||… }| jrø| | j¡}| j 	|¡ |d kr|  ¡  |}|d k	r,|dk}|d7 }qFW d S )	Nr§   TrF   rå   r   u	   
Â…â€¨â€©r   r   )
rè   rX   r/   rÊ   rJ   rY   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 }}xž|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@|  ¡  x4|||… D ]$}	|	dkrf|  ¡  n
|  |	¡ qNW |  ¡  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 }qnW d S )	NTrÂ   Fr   r   u	   
Â…â€¨â€©r   u
    
Â…â€¨â€©)r'   r/   r-   r,   rJ   r   r·   r   rÉ   r.   r3   rY   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   r\   r   r;   r?   r=   rC   rO   r    rS   rR   rU   rn   re   rp   rs   rw   ry   r„   r‡   r|   rŠ   r‘   r   r   rz   r“   r”   r}   r–   r—   r˜   r™   rx   r{   rd   rŽ   ru   rv   r£   r‚   rZ   r`   ra   rŸ   rž   r    rm   rQ   rf   rX   rY   rÊ   r[   rb   r©   rã   r¨   rè   rª   r«   r¬   r	   r	   r	   r
   r      sž    
C	


$ 
	


$
 #

	
7
66#N)Ú__all__Úerrorr   r"   r   r   r   r	   r	   r	   r
   Ú<module>	   s
   