U
    祡c'                     @   s,   d dl mZ d dlmZ G dd deZdS )    )unicode_literals)Rendererc                       s   e Zd ZdZd*ddZ fddZdd Z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dd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Z  ZS ),ReStructuredTextRenderera_  
    Render reStructuredText from Markdown

    Example:

    .. code:: python

        import commonmark

        parser = commonmark.Parser()
        ast = parser.parse('Hello `inline code` example')

        renderer = commonmark.ReStructuredTextRenderer()
        rst = renderer.render(ast)
        print(rst)  # Hello ``inline code`` example
     c                 C   s   || _ d| _d S )Nr   )indent_charindent_length)selfr    r	   9/tmp/pip-unpacked-wheel-4s07asnf/commonmark/render/rst.py__init__   s    z!ReStructuredTextRenderer.__init__c                    s>   |dkrd}n| j dkrd}n| j| j }tt| || S )N
 )Zlast_outr   r   superr   lit)r   sindent	__class__r	   r
   r      s    
zReStructuredTextRenderer.litc                 C   s   |  d d S Nr   )r   )r   r	   r	   r
   cr&   s    zReStructuredTextRenderer.cr   c                 C   s4   | j | }g }| D ]}|||  qd|S r   )r   
splitlinesappendjoin)r   literalr   r   	new_linesliner	   r	   r
   indent_lines)   s
    
z%ReStructuredTextRenderer.indent_linesc                 C   s   d S Nr	   r   nodeenteringr	   r	   r
   document4   s    z!ReStructuredTextRenderer.documentc                 C   s   |    d S r   r   r   r	   r	   r
   	softbreak7   s    z"ReStructuredTextRenderer.softbreakc                 C   s   |    |    d S r   r#   r   r	   r	   r
   	linebreak:   s    z"ReStructuredTextRenderer.linebreakc                 C   s   |  |j d S r   outr   r   r	   r	   r
   text>   s    zReStructuredTextRenderer.textc                 C   s   |  d d S )N*r'   r   r	   r	   r
   emphA   s    zReStructuredTextRenderer.emphc                 C   s   |  d d S )Nz**r*   r   r	   r	   r
   strongD   s    zReStructuredTextRenderer.strongc                 C   s   |j jdkrn|   d S )Nitem)parenttr   r   r	   r	   r
   	paragraphG   s    z"ReStructuredTextRenderer.paragraphc                 C   s$   |r|  d n|  d|j  d S )N`z <%s>`_)r'   destinationr   r	   r	   r
   linkM   s    zReStructuredTextRenderer.linkc                 C   sL   d|j  }|r:| | |   |  jd7  _| d n|  jd8  _d S )Nz.. image:: r   z:alt: )r2   r'   r   r   )r   r    r!   	directiver	   r	   r
   imageS   s    

zReStructuredTextRenderer.imagec                 C   s$   |  d |  |j |  d d S )Nz``r&   r   r	   r	   r
   code^   s    
zReStructuredTextRenderer.codec                 C   s   d}d }|j r|j  ng }t|dkr@t|d dkr@|d }|rP|d| 7 }|   | | |   |   | | |j |   d S )Nz	.. code::r   r   )infosplitlenr   r'   r   r   )r   r    r!   r4   Zlanguage_nameZ
info_wordsr	   r	   r
   
code_blockc   s    
z#ReStructuredTextRenderer.code_blockc                 C   s   |r|    d S r   r#   r   r	   r	   r
   listu   s    zReStructuredTextRenderer.listc                 C   s6   |j d dkrdnd}|r*| |d  n|   d S )NtypeZbulletr)   z#.r   )Z	list_datar'   r   )r   r    r!   tagnamer	   r	   r
   r-   y   s    zReStructuredTextRenderer.itemc                 C   s&   |r|  j d7  _ n|  j d8  _ d S )Nr   )r   r   r	   r	   r
   block_quote   s    z$ReStructuredTextRenderer.block_quotec                 C   s   ddddddg}z||j d  }W n tk
r>   |d }Y nX t|jj}|| }|rb|   n|   | | |   d S )	N#r)   =-^"   )level
IndexErrorr9   Zfirst_childr   r   r'   )r   r    r!   Zheading_charsZheading_charZheading_lengthZbannerr	   r	   r
   heading   s$    	

z ReStructuredTextRenderer.heading)r   )r   )__name__
__module____qualname____doc__r   r   r   r   r"   r$   r%   r(   r+   r,   r0   r3   r5   r6   r:   r;   r-   r>   rH   __classcell__r	   r	   r   r
   r      s(   


r   N)
__future__r   Zcommonmark.render.rendererr   r   r	   r	   r	   r
   <module>   s   