3
Y                 @   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dd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dd8d9Zd:d; Zd<d= Zdd>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 Z3ddfdgZ4dhdi Z5ddjdkZ6dldm Z7dndo Z8ddqdrZ9dsdtdudvdwdxdydzd{d|d}d~ddddZ:dddZ;dd Z<dd Z=dd Z>ddd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| _|rd|  k odk n  r|| _d| _|r|| jd kr|| _d| _|dkr|| _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   s:   | j j| x(| j s4| j jd| _| j  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(| jdS t|tr<| jdS t|trP| j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#   rB   rC   CollectionStartEventDocumentEndEventZCollectionEndEventStreamEndEventlen)r   countlevelr$   r	   r	   r
   rD      s    


zEmitter.need_eventsFc             C   sF   | j j| j | jd kr.|r&| j| _qBd| _n|sB|  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r>| 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 )NT)first)expect_document_start)r   r	   r	   r
   rS      s    z#Emitter.expect_first_document_startc       	      C   sv  t | jtr(| jjs| jjr8| jr8| jdd | j  | jjrX| j| jj}| j	| | j
j | _| jjrt| jjj }xB|D ]:}| jj| }|| j|< | j|}| j|}| j|| qW |o| jj o| j o| jj o| jj o| j  }|s| j  | jdd | jr| j  | j| _nJt | jtrd| jrR| 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   sT   t | jtrB| j  | jjr0| 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 )NT)root)r    r=   rn   expect_node)r   r	   r	   r
   re      s    zEmitter.expect_document_rootc             C   s   || _ || _|| _|| _t| jtr.| j  nt| jtt	fr| j
d | j  t| jtrf| j  qt| jtr| js| js| jjs| j r| j  q| j  qt| jtr| js| js| jjs| j r| j  q| 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   s.   | 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   s0   | j dd | j  | jj | _| jj | _d S )NT)rN   )rP   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   )rN   )rX   r'   rP   expect_first_flow_sequence_itemr"   )r   r	   r	   r
   ry     s    zEmitter.expect_flow_sequencec             C   sx   t | jtr@| jj | _|  jd8  _| jdd | jj | _	n4| j
sR| j| jkrZ| j  | jj| j | jdd d S )Nr   ]FT)r~   )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rZ| jj | _|  jd8  _| jr@| jdd | j	  | jdd | j
j | _n@| jdd | jsx| j| jkr| j	  | j
j| j | jdd d S )Nr   ,Fr   T)r~   )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   s6   | j dddd |  jd7  _| jdd | j| _d S )N{T)r.   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r@| jj | _|  jd8  _| jdd | jj | _	nn| j
sR| j| jkrZ| j  | j
 r| j r| jj| j | jddd n&| jdd | jj| j | jdd d S )Nr   }FT)r   r   ?)r   )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rZ| jj | _|  jd8  _| jr@| jdd | j	  | jdd | j
j | _nz| jdd | jsx| j| jkr| j	  | j r| j r| j
j| j | jddd n&| jdd | j
j| j | jdd d S )	Nr   r   Fr   T)r   r   r   )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   s*   | j dd | j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| j  | jdd | jj| j | jdd d S )Nr   T)r   )	r1   r-   r4   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)rN   rO   )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 )NT)rU   )expect_block_sequence_item)r   r	   r	   r
   r   u  s    z(Emitter.expect_first_block_sequence_itemc             C   sb   | r,t | jtr,| jj | _| jj | _n2| j  | j	dddd | jj
| j | jdd d S )N-T)r/   )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 )NF)rN   )rP   expect_first_block_mapping_keyr"   )r   r	   r	   r
   r}     s    zEmitter.expect_block_mappingc             C   s   | j ddS )NT)rU   )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 | _nX| j  | j	 rZ| jj
| j | jddd n*| jdddd | jj
| j | jdd d S )NT)r   r   r   )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   s*   | j dd | j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   | jdddd | j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   )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   sR   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   s
  d}t | jtrD| jjd k	rD| jd kr6| j| jj| _|t| j7 }t | jttfr| jj	d k	r| j
d krz| j| jj	| _
|t| j
7 }t | jtr| jd kr| j| jj| _|t| jj7 }|dk ot | jtpt | jtr| jj r| jj p| j p| 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   sR   | j jd krd | _d S | jd kr0| j| j j| _| jrH| 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 s8|d krn| jdkrN| j jd sd| jdkrn| j jd rnd | _d S | j jd r|d krd}d | _n"| j s|d kr| j jrd | _d S |d krt	d| jd kr| j
|| _| jr| 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   s   | j d kr| j| jj| _ | jjdks,| jr0dS | jj r| jjd r| joZ| j jpZ| j j	 r| j
rl| j js|| j
 r| j jrd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r| j jr| jo| j j	 rdS d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r.| j | _| j }| jdkrR| j| j j| n`| jdkrn| j	| j j| nD| 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s$|d dkr0t d| xt|dd D ]d}d|  koTdkn  pd|  kold	kn  pd
|  kodkn  p|dks>t d||f q>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    HzEmitter.prepare_tag_handlec             C   s  |st dg }d }}|d dkr(d}x|t|k r|| }d|  koPdkn  sd|  kohdkn  sd	|  kod
kn  s|dkr|d7 }q*||k r|j|||  |d  }}|jd}x|D ]}|jdt|  qW q*W ||k r|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(    H



zEmitter.prepare_tag_prefixc             C   s  |st d|dkr|S d }|}t| jj }xH|D ]@}|j|r4|dksZt|t|k r4| j| }|t|d  }q4W g }d }}x|t|k r^|| }	d|	  kodkn  pd|	  kodkn  pd|	  kod	kn  p|	d
kp|	dko|dkr|d7 }q||k r$|j|||  |d  }}|	jd}
x |
D ]}	|jdt|	  q@W qW ||k r||j|||  dj	|}|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^   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@    


H





zEmitter.prepare_tagc             C   s~   |st dxl|D ]d}d|  ko(dkn  pdd|  ko@dkn  pdd|  koXdkn  pd|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    
H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}|jdsX|jdr`d}d}d}t|dkpz|d dk}d}d}d}x|t|k r|| }|dkr|d	krd}d}|d
krd}|rd}|dkr|rd}d}n<|dkrd}|dkrd}|rd}|dkr |r d}d}|dkr.d}|dkpPd|  koLdkn  s|dksd|  kordkn  sd|  kodkn  sd|  kodk n  r|dkrd}| jsd}nd}|dkr|dkrd}|t|d kr d}|r
d}
d}d}nJ|dkrV|dkr,d}|t|d krBd}	|rLd}d}d}nd}d}|d7 }|dk}|d t|kp||d  dk}qW d}d}d}d}d}|s|s|s|	rd }}|rd}|
rd } }}|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   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 r&| j jdr&| 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   sf   | j s| r|}nd| }|| _ | jo(|| _|  jt|7  _d| _| jrV|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 s.| j|ks.| j|kr6| j r6| j  | j|k rxd| _d|| j  }|| _| jrl|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   sP   |d kr| j }d| _d| _|  jd7  _d| _| jr@|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   s2   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   s6   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 rF|| }|r|d ksZ|dkr|d |kr| j| jkr|r|dkr|t|kr| j  n<||| }|  jt|7  _| jr|j| j}| jj| |}n|rH|d ks|dkr|| dkr| j	  x4||| D ]$}	|	dkr*| j	  n
| j	|	 qW | j  |}nj|d ksf|d	ksf|dkr||k r||| }|  jt|7  _| jr|j| j}| jj| |}|dkrd
}|  jd7  _| jr|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_quotedr   r   btnvfrer   \N_LP) 	r   r   r   r   r   r   u    u    c             C   s  | j dd d }}xt|t|krd }|t|k r>|| }|d ks|dksd|  ko`dkn  p| jod|  ko~dkn  pd	|  kod
kn   r||k r||| }|  jt|7  _| jr|j| j}| 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rp|j| j}| jj| |d }d|  k ot|d k n  r|dks||kr| j||  | j
kr|r||| d }||k r|}|  jt|7  _| jr|j| j}| jj| | j  d| _d| _|| dkrd}|  jt|7  _| jrt|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    


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
    
  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r0d| _| j  d}d}d}d }}x|t|krd }|t|k rv|| }|r
|d ks|dkr| r|d k	r|dkr|| d	kr| j  |dk}x0||| D ] }	|	d	kr| j  q| j|	 qW |d k	r| j  |}n|r|dkr|d |kr@| j| jkr@| j  n>||| }
|  jt|
7  _| jrr|
j	| j}
| j
j|
 |}nh|d ks|d
kr||| }
|  jt|
7  _| jr|
j	| j}
| j
j|
 |d kr| j  |}|d k	r|dk}|dk}|d7 }qPW d 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r0d| _| j  d}d }}x|t|kr6d }|t|k rl|| }|r|d ks|dkrx0||| D ] }|dkr| j  q| j| qW |d k	r| j  |}nR|d ks|dkr||| }| jr|j| j}| jj	| |d kr| j  |}|d k	r,|dk}|d7 }qFW d 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sNd}|  jt|7  _| jrB|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| _	n>||| }|  jt|7  _| jr|j| j}| jj| |}n|r|dkr|| dkr@| j  x4||| D ]$}	|	dkrf| j  n
| j|	 qNW | j  d| _d| _	|}nV|d ks|dkr||| }|  jt|7  _| jr|j| j}| jj| |}|d k	r |dk}|dk}|d7 }qnW d 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)NNNNN)FF)F)FFFF)F)F)FF)N)T)T)T)@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
   