File: //usr/lib/python3/dist-packages/genshi/template/__pycache__/markup.cpython-310.pyc
o
!�b�@ � @ s� d Z ddlmZ ddlmZmZmZmZ ddlmZm Z m
Z
mZmZm
Z
mZ ddlmZ ddlmZmZmZmZmZmZmZ ddlmZ ddlmZ dd lT dd
lmZ dgZ dZ!G d
d� de�Z"dS )zMarkup templating engine.� )�chain)�Attrs�Markup� Namespace�Stream)�START�END�START_NS�END_NS�TEXT�PI�COMMENT)� XMLParser)�BadDirectiveError�Template�TemplateSyntaxError�_apply_directives�EXEC�INCLUDE�SUB)�Suite)�interpolate)�*)�NewTextTemplate�MarkupTemplatezrestructuredtext enc
@ s� e Zd ZdZdZdZdefdefdefde fde
fd efd
efde
fdefd
efdefdefgZdZeZ d'dd�Zdd� Zdd� Zdd� Zdd� Zdd� Zd(d d!�Zd"d#� Zd)d%d&�ZdS )*r aA Implementation of the template language for XML-based templates.
>>> tmpl = MarkupTemplate('''<ul xmlns:py="http://genshi.edgewall.org/">
... <li py:for="item in items">${item}</li>
... </ul>''')
>>> print(tmpl.generate(items=[1, 2, 3]))
<ul>
<li>1</li><li>2</li><li>3</li>
</ul>
zhttp://genshi.edgewall.org/zhttp://www.w3.org/2001/XInclude�def�match�when� otherwise�for�if�choose�with�replace�content�attrs�strip�xmlN�strictTc
C s, t j| |||||||d� | �| j| � d S )N)�filepath�filename�loader�encoding�lookup�
allow_exec)r �__init__�add_directives�DIRECTIVE_NAMESPACE)�self�sourcer) r* r+ r, r- r. � r4 �8/usr/lib/python3/dist-packages/genshi/template/markup.pyr/ ? s
�zMarkupTemplate.__init__c C s2 t �| � | j�| j� | j| j| jg7 _d S �N)r �
_init_filters�filters�remove�_include�_match)r2 r4 r4 r5 r7 F s
zMarkupTemplate._init_filtersc C s` t |t�s
t|| j|d�}g }|D ]�\}}}|tu r8t|| j|d |d | jd�D ]
\}}}|�|||f� q)q|t u r�|d dkr�| j
sStd| jg|dd � �R � �zt|d | j|d | jd�}W n$ t
y� } zt|| j|d |jpvd d |d |jp�d ��d }~ww |�t||f� q|tu r�|�� �d�s�|�|||f� q|�|||f� q|S ) N)r* r, � � �r- r �pythonzPython code blocks not allowed�!)�
isinstancer r r* r r r) r- �appendr r. r r �SyntaxError�lineno�offsetr r
�lstrip�
startswith) r2 r3 r, �stream�kind�data�pos�suite�errr4 r4 r5 �_parseL sJ
�
���
�
�����zMarkupTemplate._parsec C s� d}i }g }i }|D �]h\}} }
|t u r�| \}}g }
d}|j|krO|�|j�}|d u r5t|j| j|
d ��tdd� |D ��}|
�|�|�|||� � |
f� d}g }|D ]F\}}|j|kr�|�|j�}|d u rpt|j| j|
d ��t
|�tu r�t|�dkr�|d d }|
�|�|�|||� � |
f� qS|�||f� qSt
|�}|
r�|
jdd� d � |
t|�|f|||f<