U
    Sh                     @  s   d dl mZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZ eeef ZG dd deZG dd deZG d	d
 d
eZdddddZdS )    )annotations)MutableMapping)Path)AnyCallableIterabler   	TypedDictcastc                   @  sZ   e Zd ZU dZded< ded< ded< ded< ded	< ded
< ded< ded< ded< dS )OptionsTypezOptions for parsing.int
maxNestingboolhtmllinkifytypographerstrquotesxhtmlOutbreaks
langPrefix%Callable[[str, str, str], str] | None	highlightN__name__
__module____qualname____doc____annotations__ r   r   D/root/rtd-docs/venv/lib/python3.8/site-packages/markdown_it/utils.pyr
      s   
r
   c                   @  s"   e Zd ZU dZded< ded< dS )
PresetTypez%Preset configuration for markdown-it.r
   optionsz3MutableMapping[str, MutableMapping[str, list[str]]]
componentsNr   r   r   r   r   r    $   s   
r    c                   @  s  e Zd ZdZdddddZddd	d
dZddddddZddd	ddZddddZddddZ	ddddZ
ddddZeddddZejdddddZed dd!d"Zejd ddd#d"Zed dd$d%Zejd ddd&d%Zed dd'd(Zejd ddd)d(Zeddd*d+Zejdddd,d+Zed dd-d.Zejd ddd/d.Zed dd0d1Zejd ddd2d1Zeddd3d4Zejdddd5d4Zed6dd7d8Zejd6ddd9d8Zd:S );OptionsDictzMA dictionary, with attribute access to core markdownit configuration options.r
   None)r!   returnc                 C  s   t tt|| _d S N)r	   r
   dict_options)selfr!   r   r   r   __init__3   s    zOptionsDict.__init__r   r   )keyr%   c                 C  s
   | j | S r&   r(   r)   r+   r   r   r   __getitem__6   s    zOptionsDict.__getitem__)r+   valuer%   c                 C  s   || j |< d S r&   r,   )r)   r+   r/   r   r   r   __setitem__9   s    zOptionsDict.__setitem__c                 C  s   | j |= d S r&   r,   r-   r   r   r   __delitem__<   s    zOptionsDict.__delitem__zIterable[str])r%   c                 C  s
   t | jS r&   )iterr(   r)   r   r   r   __iter__?   s    zOptionsDict.__iter__r   c                 C  s
   t | jS r&   )lenr(   r3   r   r   r   __len__B   s    zOptionsDict.__len__c                 C  s
   t | jS r&   )reprr(   r3   r   r   r   __repr__E   s    zOptionsDict.__repr__c                 C  s
   t | jS r&   )r   r(   r3   r   r   r   __str__H   s    zOptionsDict.__str__c                 C  s
   | j d S )z%Internal protection, recursion limit.r   r,   r3   r   r   r   r   K   s    zOptionsDict.maxNesting)r/   r%   c                 C  s   || j d< d S )Nr   r,   r)   r/   r   r   r   r   P   s    r   c                 C  s
   | j d S )zEnable HTML tags in source.r   r,   r3   r   r   r   r   T   s    zOptionsDict.htmlc                 C  s   || j d< d S )Nr   r,   r:   r   r   r   r   Y   s    c                 C  s
   | j d S )z1Enable autoconversion of URL-like texts to links.r   r,   r3   r   r   r   r   ]   s    zOptionsDict.linkifyc                 C  s   || j d< d S )Nr   r,   r:   r   r   r   r   b   s    c                 C  s
   | j d S )z$Enable smartquotes and replacements.r   r,   r3   r   r   r   r   f   s    zOptionsDict.typographerc                 C  s   || j d< d S )Nr   r,   r:   r   r   r   r   k   s    c                 C  s
   | j d S )zQuote characters.r   r,   r3   r   r   r   r   o   s    zOptionsDict.quotesc                 C  s   || j d< d S )Nr   r,   r:   r   r   r   r   t   s    c                 C  s
   | j d S )z&Use '/' to close single tags (<br />).r   r,   r3   r   r   r   r   x   s    zOptionsDict.xhtmlOutc                 C  s   || j d< d S )Nr   r,   r:   r   r   r   r   }   s    c                 C  s
   | j d S )z)Convert newlines in paragraphs into <br>.r   r,   r3   r   r   r   r      s    zOptionsDict.breaksc                 C  s   || j d< d S )Nr   r,   r:   r   r   r   r      s    c                 C  s
   | j d S )z&CSS language prefix for fenced blocks.r   r,   r3   r   r   r   r      s    zOptionsDict.langPrefixc                 C  s   || j d< d S )Nr   r,   r:   r   r   r   r      s    r   c                 C  s
   | j d S )zEHighlighter function: (content, langName, langAttrs) -> escaped HTML.r   r,   r3   r   r   r   r      s    zOptionsDict.highlightc                 C  s   || j d< d S )Nr   r,   r:   r   r   r   r      s    N)r   r   r   r   r*   r.   r0   r1   r4   r6   r8   r9   propertyr   setterr   r   r   r   r   r   r   r   r   r   r   r   r#   -   sZ   r#   z
str | Pathzlist[list[Any]])pathr%   c                 C  s   t | jdd}g }d}d}|jdd}tt|D ]}||  dkr4|dkrp||||d   g d}nZ|dkr|d d	||d |  d
}n,|d
kr|d d	||d |  d}|}q4|S )Nzutf-8)encodingr   T)keepends.       )	r   	read_text
splitlinesranger5   rstripappendstripjoin)r=   textZtestssectionZlast_poslinesir   r   r   read_fixture_file   s$      rP   N)
__future__r   collections.abcr   ZMutableMappingABCpathlibr   typingr   r   r   r   r	   r   ZEnvTyper
   r    r#   rP   r   r   r   r   <module>   s    	p