
0V                 @   sf   d  d g Z  d d l m Z d d l TGd d   d e  Z Gd d   d  Z Gd 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   sL   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ 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 d i Z d d d d d d d  Z d d   Z d	 d
   Z d d   Z d d   Z d d d d  Z	 d d   Z
 d d   Z d d   Z d d d  Z d d   Z d d   Z d d d d d 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 d0 d1   Z d2 d3   Z d4 d5   Z d6 d7   Z d d8 d9  Z d: d;   Z d< d=   Z d d> d?  Z  d@ dA   Z! dB dC   Z" dD dE   Z# dF dG   Z$ dH dI   Z% dJ dK   Z& dL dM   Z' dN dO   Z( dP dQ   Z) dR dS   Z* dT dU   Z+ dV dW   Z, dX dY   Z- dZ d[   Z. d\ d]   Z/ d^ d_   Z0 d` da   Z1 db dc   Z2 dd de   Z3 d d df dg  Z4 dh di   Z5 d dj dk  Z6 dl dm   Z7 dn do   Z8 dp dq dr  Z9 ds dt du dv dw dx dy dz d{ d| d} d~ d d d d d d d d d d d d d d d d d d i Z: dp d d  Z; d d   Z< d d   Z= d d   Z> dp d d  Z? d S)r   !ztag:yaml.org,2002:z!!Nc             C   se  | |  _  d  |  _ g  |  _ |  j |  _ g  |  _ d  |  _ g  |  _ d  |  _ d |  _	 d |  _
 d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ | |  _ | |  _ d |  _ | r d | k  o d k  n r | |  _ d |  _ | r| |  j d k r| |  _ d |  _ | d k r4| |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  S)N    FT   r   
   P   

)r   r   r   )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   r1   r&   widthr2   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   sO   |  j  j |  x8 |  j   sJ |  j  j d  |  _ |  j   d  |  _ q Wd  S)Nr   )r#   appendneed_more_eventspopr$   r"   )r   r$   r	   r	   r
   emito   s
    
zEmitter.emitc             C   sv   |  j  s d S|  j  d } t | t  r6 |  j d  St | t  rR |  j d  St | t  rn |  j d  Sd Sd  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   s   d } x |  j  d d   D]o } t | t t f  rB | d 7} n7 t | t t f  rd | d 8} n t | t  ry d } | d k  r d Sq Wt |  j   | d k  S)Nr   r   F)r#   rB   rC   CollectionStartEventDocumentEndEventZCollectionEndEventStreamEndEventlen)r   countlevelr$   r	   r	   r
   rD      s    zEmitter.need_eventsFc             C   s_   |  j  j |  j  |  j d  k rC | r7 |  j |  _ q[ d |  _ n | s[ |  j |  j 7_ d  S)Nr   )r%   r=   r&   r3   )r   flow
indentlessr	   r	   r
   increase_indent   s    zEmitter.increase_indentc             C   sp   t  |  j t  rY |  j j r@ t |  j d  r@ |  j j |  _ |  j   |  j |  _ n t	 d |  j   d  S)Nr   z%expected StreamStartEvent, but got %s)
rB   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)NfirstT)expect_document_start)r   r	   r	   r
   rS      s    z#Emitter.expect_first_document_startc       	      C   s  t  |  j t  r|  j j s* |  j j rM |  j rM |  j d d  |  j   |  j j r{ |  j |  j j  } |  j	 |  |  j
 j   |  _ |  j j rt |  j j j    } xY | D]Q } |  j j | } | |  j | <|  j |  } |  j |  } |  j | |  q W| oN|  j j oN|  j oN|  j j oN|  j j oN|  j   } | s|  j   |  j d d  |  j r|  j   |  j |  _ na t  |  j t  r|  j r|  j d d  |  j   |  j   |  j |  _ n t d |  j   d  S)Nz...Tz---z'expected DocumentStartEvent, but got %s)rB   r$   rC   versionZtagsr0   write_indicatorwrite_indentprepare_versionwrite_version_directiveDEFAULT_TAG_PREFIXEScopyr6   sortedkeysprepare_tag_handleprepare_tag_prefixwrite_tag_directiveexplicitr1   check_empty_documentexpect_document_rootr"   rJ   write_stream_endrT   r   )	r   rU   version_textZhandleshandleprefixhandle_textprefix_textimplicitr	   r	   r
   rV      sB    !

	
	

zEmitter.expect_document_startc             C   sr   t  |  j t  r[ |  j   |  j j rB |  j d d  |  j   |  j   |  j |  _ n t	 d |  j   d  S)Nz...Tz%expected DocumentEndEvent, but got %s)
rB   r$   rI   rY   rc   rX   flush_streamrV   r"   r   )r   r	   r	   r
   expect_document_end   s    


zEmitter.expect_document_endc             C   s'   |  j  j |  j  |  j d d  d  S)NrootT)r    r=   rn   expect_node)r   r	   r	   r
   re      s    zEmitter.expect_document_rootc             C   sT  | |  _  | |  _ | |  _ | |  _ t |  j t  rC |  j   nt |  j t t	 f  r=|  j
 d  |  j   t |  j t  r |  j   qPt |  j t  r |  j s |  j s |  j j s |  j   r |  j   q:|  j   qPt |  j t  rP|  j s#|  j s#|  j j s#|  j   r0|  j   qP|  j   n t d |  j   d  S)N&zexpected NodeEvent, but got %s)r(   r)   r*   r+   rB   r$   
AliasEventexpect_aliasScalarEventrH   process_anchorprocess_tagexpect_scalarrE   r'   r1   Z
flow_stylecheck_empty_sequenceexpect_flow_sequenceexpect_block_sequencerF   check_empty_mappingexpect_flow_mappingexpect_block_mappingr   )r   ro   sequencemapping
simple_keyr	   r	   r
   rp      s,    				
zEmitter.expect_nodec             C   sA   |  j  j d  k r t d   |  j d  |  j 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   sB   |  j  d d  |  j   |  j j   |  _ |  j j   |  _ d  S)NrN   T)rP   process_scalarr%   r?   r&   r    r"   )r   r	   r	   r
   rw   
  s    
zEmitter.expect_scalarc             C   sE   |  j  d d d d |  j d 7_ |  j d d  |  j |  _ d  S)N[Tr.   r   rN   )rX   r'   rP   expect_first_flow_sequence_itemr"   )r   r	   r	   r
   ry     s    zEmitter.expect_flow_sequencec             C   s   t  |  j t  rX |  j j   |  _ |  j d 8_ |  j d d  |  j j   |  _	 nH |  j
 ss |  j |  j k r} |  j   |  j j |  j  |  j d d  d  S)Nr   ]Fr~   T)rB   r$   SequenceEndEventr%   r?   r&   r'   rX   r    r"   r1   r-   r4   rY   r=   expect_flow_sequence_itemrp   )r   r	   r	   r
   r     s    
z'Emitter.expect_first_flow_sequence_itemc             C   s   t  |  j t  r{ |  j j   |  _ |  j d 8_ |  j rV |  j d d  |  j	   |  j d d  |  j
 j   |  _ nX |  j d d  |  j s |  j |  j k r |  j	   |  j
 j |  j  |  j d d  d  S)Nr   ,Fr   r~   T)rB   r$   r   r%   r?   r&   r'   r1   rX   rY   r    r"   r-   r4   r=   r   rp   )r   r	   r	   r
   r   $  s    	

z!Emitter.expect_flow_sequence_itemc             C   sE   |  j  d d d d |  j d 7_ |  j d d  |  j |  _ d  S)N{Tr.   r   rN   )rX   r'   rP   expect_first_flow_mapping_keyr"   )r   r	   r	   r
   r|   6  s    zEmitter.expect_flow_mappingc             C   s   t  |  j t  rX |  j j   |  _ |  j d 8_ |  j d d  |  j j   |  _	 n |  j
 ss |  j |  j k r} |  j   |  j
 r |  j   r |  j j |  j  |  j d d d d  n3 |  j d d  |  j j |  j  |  j d d  d  S)Nr   }Fr   Tr   ?)rB   r$   MappingEndEventr%   r?   r&   r'   rX   r    r"   r1   r-   r4   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  r{ |  j j   |  _ |  j d 8_ |  j rV |  j d d  |  j	   |  j d d  |  j
 j   |  _ n |  j d d  |  j s |  j |  j k r |  j	   |  j r |  j   r |  j
 j |  j  |  j d d d d  n3 |  j d d  |  j
 j |  j  |  j d d  d  S)	Nr   r   Fr   r   Tr   r   )rB   r$   r   r%   r?   r&   r'   r1   rX   rY   r    r"   r-   r4   r   r=   r   rp   r   )r   r	   r	   r
   expect_flow_mapping_keyM  s"    	

zEmitter.expect_flow_mapping_keyc             C   s7   |  j  d d  |  j j |  j  |  j d d  d  S)N:Fr   T)rX   r    r=   r   rp   )r   r	   r	   r
   r   b  s    z(Emitter.expect_flow_mapping_simple_valuec             C   s\   |  j  s |  j |  j k r% |  j   |  j d d  |  j j |  j  |  j d d  d  S)Nr   Tr   )	r1   r-   r4   rY   rX   r    r=   r   rp   )r   r	   r	   r
   r   g  s
    
z!Emitter.expect_flow_mapping_valuec             C   s9   |  j  o |  j } |  j d d d |  |  j |  _ d  S)NrN   FrO   )r*   r/   rP    expect_first_block_sequence_itemr"   )r   rO   r	   r	   r
   rz   p  s    zEmitter.expect_block_sequencec             C   s   |  j  d d  S)NrU   T)expect_block_sequence_item)r   r	   r	   r
   r   u  s    z(Emitter.expect_first_block_sequence_itemc             C   s   | r@ t  |  j t  r@ |  j j   |  _ |  j j   |  _ nC |  j   |  j	 d d d d |  j j
 |  j  |  j d d  d  S)N-Tr/   r~   )rB   r$   r   r%   r?   r&   r    r"   rY   rX   r=   r   rp   )r   rU   r	   r	   r
   r   x  s    
z"Emitter.expect_block_sequence_itemc             C   s    |  j  d d  |  j |  _ d  S)NrN   F)rP   expect_first_block_mapping_keyr"   )r   r	   r	   r
   r}     s    zEmitter.expect_block_mappingc             C   s   |  j  d d  S)NrU   T)expect_block_mapping_key)r   r	   r	   r
   r     s    z&Emitter.expect_first_block_mapping_keyc             C   s   | r@ t  |  j t  r@ |  j j   |  _ |  j j   |  _ n{ |  j   |  j	   r |  j j
 |  j  |  j d d d d  n9 |  j d d d d |  j j
 |  j  |  j d d  d  S)Nr   Tr   r   r/   )rB   r$   r   r%   r?   r&   r    r"   rY   r   r=   !expect_block_mapping_simple_valuerp   rX   expect_block_mapping_value)r   rU   r	   r	   r
   r     s    
z Emitter.expect_block_mapping_keyc             C   s7   |  j  d d  |  j j |  j  |  j d d  d  S)Nr   Fr   T)rX   r    r=   r   rp   )r   r	   r	   r
   r     s    z)Emitter.expect_block_mapping_simple_valuec             C   sG   |  j    |  j d d d d |  j j |  j  |  j d d  d  S)Nr   Tr/   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   )rB   r$   rE   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   )rB   r$   rF   r#   r   )r   r	   r	   r
   r{     s    zEmitter.check_empty_mappingc             C   sq   t  |  j t  s |  j r! d S|  j d } t  | t  op | j d  k op | j d  k op | j op | j d k S)NFr    )	rB   r$   rC   r#   rt   r   tagrl   value)r   r$   r	   r	   r
   rd     s
    zEmitter.check_empty_documentc             C   sw  d } t  |  j t  rd |  j j d  k	 rd |  j d  k rQ |  j |  j j  |  _ | t |  j  7} t  |  j t t f  r |  j j	 d  k	 r |  j
 d  k r |  j |  j j	  |  _
 | t |  j
  7} t  |  j t  r|  j d  k r|  j |  j j  |  _ | t |  j j  7} | d k  ovt  |  j t  pvt  |  j t  ra|  j j ra|  j j pv|  j   pv|  j   S)Nr      )rB   r$   Z	NodeEventr   r7   prepare_anchorrK   rt   rH   r   r8   prepare_tagr9   analyze_scalarr   r   rr   r   r   rx   r{   )r   Zlengthr	   r	   r
   r     s$    $zEmitter.check_simple_keyc             C   ss   |  j  j d  k r d  |  _ d  S|  j d  k rF |  j |  j  j  |  _ |  j rf |  j | |  j d  d  |  _ d  S)NT)r$   r   r7   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   |  _ |  j sR | d  k r |  j d k rq |  j  j d s |  j d k r |  j  j d r d  |  _ d  S|  j  j d r | d  k r d } d  |  _ n/ |  j s | d  k r |  j  j r d  |  _ d  S| d  k rt	 d   |  j d  k r3|  j
 |  |  _ |  j rO|  j |  j d  d  |  _ d  S)Nr   r   r   r   ztag is not specifiedT)r$   r   rB   rt   r:   choose_scalar_styler1   rl   r8   r   r   rX   )r   r   r	   r	   r
   rv     s,    	"		zEmitter.process_tagc             C   sE  |  j  d  k r' |  j |  j j  |  _  |  j j d k sB |  j rF d S|  j j r |  j j d r |  j o |  j  j p |  j  j	 r |  j
 r |  j  j s |  j
 r |  j  j r d S|  j j r |  j j d k r |  j
 r |  j r |  j  j r |  j j S|  j j s|  j j d k rA|  j  j rA|  j o9|  j  j	 rAd Sd S)N"r   r   z|>')r9   r   r$   r   r:   r1   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  |  _  |  j d  k rE |  j   |  _ |  j } |  j d k rw |  j |  j  j |  n |  j d k r |  j	 |  j  j |  n` |  j d k r |  j
 |  j  j  n; |  j d k r |  j |  j  j  n |  j |  j  j |  d  |  _  d  |  _ d  S)Nr   r   >|)r9   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   rW   majorminorr	   r	   r
   rZ     s    zEmitter.prepare_versionc             C   s   | s t  d   | d d k s2 | d d k rB t  d |   x | d d  D]| } d | k op d k n p d | k o d	 k n p d
 | k o d k n p | d k sS t  d | | f   qS W| S)Nztag handle must not be emptyr   r   r   z*tag handle must start and end with '!': %r09AZazz-_z*invalid character %r in the tag handle: %rrG   rG   )r   )r   rh   chr	   r	   r
   r`   !  s     TzEmitter.prepare_tag_handlec             C   s`  | s t  d   g  } d } } | d d k r8 d } x | t |  k  r/| | } d | k on d k n s d | k o d k n s d	 | k o d
 k n s | d k r | d 7} q; | | k  r | j | | |   | d } } | j d  } x% | D] } | j d t |   qWq; W| | k  rS| j | | |   d j |  S)Nztag prefix must not be emptyr   r   r   r   r   r   r   r   r   z-;/?!:@&=+$,_.~*'()[]zutf-8z%%%02Xr   )r   rK   r=   encodeordjoin)r   ri   chunksstartendr   datar	   r	   r
   ra   -  s(    

TzEmitter.prepare_tag_prefixc             C   s  | s t  d   | d k r" | Sd  } | } t |  j j    } xd | D]\ } | j |  rJ | d k s t |  t |  k  rJ |  j | } | t |  d   } qJ Wg  } d } } x| t |  k  r| | }	 d |	 k o d k n sQd |	 k od k n sQd |	 k o(d	 k n sQ|	 d
 k sQ|	 d k r^| d k r^| d 7} q | | k  r| j | | |   | d } } |	 j d  }
 x% |
 D] }	 | j d t |	   qWq W| | k  r| j | | |   d j	 |  } | rd | | f Sd | Sd  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^   r6   r_   
startswithrK   r=   r   r   r   )r   r   rh   suffixprefixesri   r   r   r   r   r   Zsuffix_textr	   r	   r
   r   D  s@    $

TzEmitter.prepare_tagc             C   s   | s t  d   x | D]| } d | k o6 d k n p| d | k oR d k n p| d | k on d k n p| | 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    TzEmitter.prepare_anchorc             C   sH  | s= t  d | d d d d d d d d d d d	 d d
 d  Sd } d } d } d } d } d } d } d }	 d }
 d } | j d  s | j d  r d } d } d } t |  d k p | d d k } d } d } d } x| t |  k  rj| | } | d k r_| d k r d } d } | d k r>d } | r>d } | d k r| rd } d } nN | d k rqd } | d k rd } | rd } | d k r| rd } d } | d k rd } | d k pd | k od k n sq| d k sGd | k o
d k n sGd | k o&d k n sGd | k oBd  k  n rk| d! k rkd } |  j sqd } n d } | d k r| d k rd } | t |  d k rd } | rd }
 d } d } na | d k r| d k rd } | t |  d k r d }	 | rd } d } d } n d } d } | d 7} | d k } | d t |  k pd| | d d k } q Wd } 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 d d | d | d | d | d	 | d
 |  S)"Nr   r   Tr   Fr   r   r   r   r   z---z...r   u     	
  r   z#,[]{}&*!|>'"%@`z?:r   z,?[]{}r   #u	   
  r    ~       u   ퟿u   u   �u   𐀀u   􏿿u   ﻿)r   r   rK   r2   )r   r   Zblock_indicatorsZflow_indicatorsZline_breaksZspecial_charactersleading_spaceZleading_breakZtrailing_spaceZtrailing_breakZbreak_spaceZspace_breakZpreceeded_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 j   d  S)Nflush)rQ   r   r   )r   r	   r	   r
   rm     s    zEmitter.flush_streamc             C   s;   |  j  r7 |  j  j d  r7 |  j j d j |  j    d  S)Nzutf-16u   ﻿)r   r   r   writer   )r   r	   r	   r
   rR     s    zEmitter.write_stream_startc             C   s   |  j    d  S)N)rm   )r   r	   r	   r
   rf     s    zEmitter.write_stream_endc             C   s   |  j  s | r | } n
 d | } | |  _  |  j o8 | |  _ |  j t |  7_ d |  _ |  j rw | j |  j  } |  j j |  d  S)Nr   F)	r.   r/   r-   rK   r0   r   r   r   r   )r   r   Zneed_whitespacer.   r/   r   r	   r	   r
   rX      s    	
			zEmitter.write_indicatorc             C   s   |  j  p d } |  j sA |  j | k sA |  j | k rK |  j rK |  j   |  j | k  r d |  _ d | |  j } | |  _ |  j r | j |  j  } |  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   sn   | d  k r |  j  } d |  _ d |  _ |  j d 7_ d |  _ |  j rZ | j |  j  } |  j j |  d  S)NTr   r   )	r5   r.   r/   r,   r-   r   r   r   r   )r   r   r	   r	   r
   r   ;  s    					zEmitter.write_line_breakc             C   sC   d | } |  j  r% | j |  j   } |  j 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   sI   d | | f } |  j  r+ | j |  j   } |  j 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  |  j  d d  d } d } d } } x| t |  k rd  } | t |  k  r] | | } | r'| d  k s{ | d k r9| d | k r |  j |  j k r | r | d k r | t |  k r |  j   nP | | |  } |  j t |  7_ |  j r| j |  j  } |  j j |  | } n| r| d  k sE| d k r9| | d k r_|  j	   x> | | |  D], }	 |	 d k r|  j	   qp|  j	 |	  qpW|  j   | } n | d  k s| d	 k s| d k r9| | k  r9| | |  } |  j t |  7_ |  j r#| j |  j  } |  j j |  | } | d k rd
 } |  j d 7_ |  j ru| j |  j  } |  j j |  | d } | d  k	 r| d k } | d k } | d 7} q) W|  j  d d  d  S)Nr   TFr   r   r   u	   
  r   u
    
  z''r   )
rX   rK   r-   r4   rY   r   r   r   r   r   )
r   textr   spacesbreaksr   r   r   r   brr	   r	   r
   r   V  sb    

(		

	$		
zEmitter.write_single_quoted r   r   b	tr   nvfr   rer   \r   Nr   _u    Lu    Pc             C   sH  |  j  d d  d } } x| t |  k r3d  } | t |  k  rQ | | } | d  k s | d k s d | k o d k n p |  j o d | k o d k n p d	 | k o d
 k n r| | k  r)| | |  } |  j t |  7_ |  j r| j |  j  } |  j j |  | } | d  k	 r| |  j k rXd |  j | } nN | d k rwd t	 |  } n/ | d k rd t	 |  } n d t	 |  } |  j t |  7_ |  j r| j |  j  } |  j j |  | d } d | k  ot |  d k  n r&| d k s.| | k r&|  j | | |  j
 k r&| r&| | |  d } | | k  rt| } |  j t |  7_ |  j r| j |  j  } |  j j |  |  j   d |  _ d |  _ | | d k r&d } |  j t |  7_ |  j r| j |  j  } |  j j |  | d 7} q W|  j  d d  d  S)Nr   Tr   u   "\  ﻿r   r   r   u   ퟿u   u   �r      ÿz\x%02Xu   ￿z\u%04Xz\U%08Xr   F)rX   rK   r2   r-   r   r   r   r   ESCAPE_REPLACEMENTSr   r4   rY   r.   r/   )r   r   r   r   r   r   r   r	   r	   r
   r     sf    

			
> 	
			zEmitter.write_double_quotedc             C   s|   d } | rx | d d k r/ | t  |  j  7} | d	 d k rL | d 7} n, t |  d k sn | d
 d k rx | d 7} | S)Nr   r   u
    
  r   u	   
  r   r   +rG   )strr3   rK   )r   r   hintsr	   r	   r
   determine_block_hints  s    "
zEmitter.determine_block_hintsc             C   s  |  j  |  } |  j d | d  | d d   d k rB d |  _ |  j   d } d } d } d } } xG| t |  k rd  } | t |  k  r | | } | rb| d  k s | d k r| r | d  k	 r | d k r | | d	 k r |  j   | d k } x> | | |  D], }	 |	 d	 k r2|  j   q|  j |	  qW| d  k	 rY|  j   | } n| r| d k r| d | k r|  j |  j k r|  j   nP | | |  }
 |  j t |
  7_ |  j r|
 j	 |  j  }
 |  j
 j |
  | } n | d  k s| d
 k r| | |  }
 |  j t |
  7_ |  j rT|
 j	 |  j  }
 |  j
 j |
  | d  k rz|  j   | } | d  k	 r| d k } | d k } | d 7} qk Wd  S)Nr   Tr   r   Fr   u	   
  r   r   u
    
  rG   )r   rX   r0   r   rK   rY   r-   r4   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  |  j  |  } |  j d | d  | d d   d k rB d |  _ |  j   d } d } } xG| t |  k rd  } | t |  k  r | | } | r| d  k s | d k rx> | | |  D], } | d k r |  j   q |  j |  q W| d  k	 r|  j   | } no | d  k s)| d k r| | |  } |  j rT| j |  j  } |  j j	 |  | d  k rz|  j   | } | d  k	 r| d k } | d 7} q_ Wd  S)	Nr   Tr   r   r   u	   
  r   rG   )
r   rX   r0   r   rK   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 sk d } |  j t |  7_ |  j r[ | j |  j  } |  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#|  j   d |  _ d |  _	 nP | | |  } |  j t |  7_ |  j rc| j |  j  } |  j j |  | } n | r| d k r|| | d k r|  j   x> | | |  D], }	 |	 d k r|  j   q|  j |	  qW|  j   d |  _ d |  _	 | } nn | d  k s&| d k r|| | |  } |  j t |  7_ |  j rf| j |  j  } |  j j |  | } | d  k	 r| d k } | d k } | d 7} q Wd  S)	NTr   Fr   r   u	   
  r   u
    
  )r(   r0   r.   r-   rK   r   r   r   r   r/   r4   rY   r   )
r   r   r   r   r   r   r   r   r   r   r	   r	   r
   r   8  sl    						

(
			

				zEmitter.write_plain)@r   r   r   r\   r   r<   r@   r>   rD   rP   r!   rT   rS   rV   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   rR   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
   
