B
    \                 @   sv   d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
mZ ddlmZmZ eeZG dd deZdS )	a  
    sphinx.environment.adapters.indexentries
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Index entries adapters for sphinx.environment.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)groupby)	text_type	iteritems)___)
split_intologgingc               @   s(   e Zd Zdd ZdedfddZdS )IndexEntriesc             C   s
   || _ d S )N)env)selfr
    r   Glib/python3.7/site-packages/sphinx/environment/adapters/indexentries.py__init__   s    zIndexEntries.__init__Tz(.*) ([(][^()]*[)])c                s  ddl m  i }d|df fdd	xt| jjD ]\}x|D ]\}}}}	y||dkrytdd|\}
}W n& tk
r   td	d|\}
d
}Y nX |
|||	d n |dkrtdd|\}}||||	d ||||	d n|dkrZtdd|\}}}||d | ||	d ||d | ||	d ||d | ||	d n|dkrtdd|\}}|td| dd|	d nJ|dkrtdd|\}}|td| dd|	d ntj	t
d|d W qN tk
r } ztj	t|d W dd}~X Y qNX qNW q<W dd }t| |d}|rd
}d}d}x|t|k r|| \}\}}}|s||}|r||d	kr||dg i |gd | ||= qH|d	}n|}|}|d	7 }qHW dd }dd t||D S )z7Create the real index from the collected index entries.r   )NoUriTNc                s   t | } || }|s(g i |g || < }|rF|d|||d |d nF|rydd  }W n  k
rv   Y nX t|d ||f d S )N    )linkdickeyZgenindex#r   )r   getZget_relative_uribisectZinsort)ZwordZsubwordmainr   r   r   entryZuri)r   	add_entrybuilderfntidr   r   r   +   s    
z,IndexEntries.create_index.<locals>.add_entryZsingle   r   r   )r   ZpairZtriple    z, Zseezsee %sF)r   r   Zseealsozsee also %szunknown index entry type %r)locationc             S   sn   | \}\}}}|r|}t d| }|dr<|dd  }|dd  sV|drbtd| }|| d fS )NNFDu   ‏r   r   r      )unicodedata	normalizelower
startswithisalphachr)r   r   voidZcategory_keyZlckeyr   r   r   keyfuncb   s    
z*IndexEntries.create_index.<locals>.keyfuncc             S   s   | \}}t dd t|d D |d< |d d kr~|drH|dd  }td|d d  }| sp|dkrt|S td	S n|d S d S )
Nc             s   s    | ]\}\}}}||fV  qd S )Nr   ).0ZsiZser*   r   r   r   	<genexpr>   s    z>IndexEntries.create_index.<locals>.keyfunc2.<locals>.<genexpr>r   r   u   ‏r"   r   r   ZSymbols)sortedr   r'   r$   r%   upperr(   r   )itemkvZletterr   r   r   keyfunc2   s    

z+IndexEntries.create_index.<locals>.keyfunc2c             S   s   g | ]\}}|t |fqS r   )list)r,   Zkey_groupr   r   r   
<listcomp>   s   z-IndexEntries.create_index.<locals>.<listcomp>)Zsphinx.environmentr   r   r
   Zindexentriesr   
ValueErrorr   loggerZwarningr   strr.   itemslenmatchr5   
setdefaultextendr   )r   r   Zgroup_entriesZ_fixrenewentriestypevaluer   Z	index_keyr   ZsubentryfirstsecondZthirderrr+   ZnewlistZoldkeyZoldsubitemsir   ZtargetsZsubitemsZ_keymr3   r   )r   r   r   r   r   r   create_index#   sp    



,
zIndexEntries.create_indexN)__name__
__module____qualname__r   recompilerH   r   r   r   r   r	      s   r	   )__doc__r   rL   r$   	itertoolsr   Zsixr   r   Zsphinx.localer   r   Zsphinx.utilr   r   Z	getLoggerrI   r8   objectr	   r   r   r   r   <module>
   s   
