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 deZ"dS )zMarkup templating engine. )chain)AttrsMarkup NamespaceStream)STARTENDSTART_NSEND_NSTEXTPICOMMENT) XMLParser)BadDirectiveErrorTemplateTemplateSyntaxError_apply_directivesEXECINCLUDESUB)Suite)interpolate)*)NewTextTemplateMarkupTemplatezrestructuredtext enc
@ s e Zd ZdZdZdZdefdefdefde fde
fd efd
efde
fdefd
efdefdefgZdZeZ d'ddZdd 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('''
''')
>>> print(tmpl.generate(items=[1, 2, 3]))
zhttp://genshi.edgewall.org/zhttp://www.w3.org/2001/XIncludedefmatchwhen otherwiseforifchoosewithreplacecontentattrsstripxmlNstrictTc
C s, t j| |||||||d | | j| d S )N)filepathfilenameloaderencodinglookup
allow_exec)r __init__add_directivesDIRECTIVE_NAMESPACE)selfsourcer) 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_filtersfiltersremove_include_match)r2 r4 r4 r5 r7 F s
zMarkupTemplate._init_filtersc C s` t |ts
t|| j|d}g }|D ]\}}}|tu r8t|| j|d |d | jdD ]
\}}}||||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 |jpd d }~ww |t||f q|tu r| ds||||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 SyntaxErrorlinenooffsetr r
lstrip
startswith) r2 r3 r, streamkinddatapossuiteerrr4 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 rt|dkr|d d }|
||||| |
f qS|||f qSt
|}|
r|
jdd d |
t||f|||f<