o !b@sdZddlZddlmZmZmZddlmZddlm Z ddl m Z ddl m Z ddlmZmZgd Zd ZGd d d eZGd ddeZGdddeZGdddeZdS)zYBasic support for the template engine plugin API used by TurboGears and CherryPy/Buffet. NETHTMLXML)DocType)Template)TemplateLoader)MarkupTemplate) TextTemplateNewTextTemplate)ConfigurationErrorAbstractTemplateEnginePluginMarkupTemplateEnginePluginTextTemplateEnginePluginzrestructuredtext enc@seZdZdZdS)r z=Exception raised when invalid plugin options are encountered.N)__name__ __module__ __qualname____doc__rr8/usr/lib/python3/dist-packages/genshi/template/plugin.pyr !sr c@sHeZdZdZdZdZdddZdddZddd Zdd d Z d d Z dS)r z!Implementation of the plugin API.Nc CsD||_|dur i}||_|dd|_|dd}t|tjr%|dv}dd|ddd D}| |_ z t |d d }Wnt yQt d |d w|d d}|rct |dsct d|dd}|dvrst d|z t|dd}Wnt yt d|dwtdd|D|||j|||d|_dS)Nzgenshi.default_encodingzgenshi.auto_reload1ronyestruecSg|]}|r|qSrr.0prrr 5s z9AbstractTemplateEnginePlugin.__init__..zgenshi.search_path:zgenshi.max_cache_sizez&Invalid value for max_cache_size: "%s"zgenshi.loader_callback__call__z"loader callback must be a functionzgenshi.lookup_errorsstrict)lenientr$zUnknown lookup errors mode "%s"zgenshi.allow_execTz!Invalid value for allow_exec "%s"cSrrrrrrrrMs) auto_reloadmax_cache_size default_classvariable_lookup allow_execcallback)get_extra_varsoptionsgetdefault_encoding isinstancesix string_typeslowersplituse_package_namingint ValueErrorr hasattrboolrtemplate_classloader) selfextra_vars_funcr-r& search_pathr'loader_callback lookup_errorsr*rrr__init__+sT        z%AbstractTemplateEnginePlugin.__init__cCsn|dur ||S|jr1|d}|dkr1ddlm}|d|}||dd|j}|||}|j|S)z_Find a template specified in python 'dot' notation, or load one from a string. N.r)resource_filename)r:r5rfind pkg_resourcesrC extensionr;load)r< templatenametemplate_stringdividerrCpackagebasenamerrr load_templateUs      z*AbstractTemplateEnginePlugin.load_templateFcCs*|dur|j}d|i}|jr|j|d<|S)Nmethodencoding)default_formatr/r<formatfragmentkwargsrrr_get_render_optionsfs  z0AbstractTemplateEnginePlugin._get_render_optionscCs&|j||d}|||jdi|S)z8Render the template to a string using the provided info.)rSrTNr)rV transformrender)r<inforSrTtemplaterUrrrrXnsz#AbstractTemplateEnginePlugin.rendercCs$t|ts ||}|jdi|S)%Render the output to an event stream.Nr)r0rrNgenerate)r<rYrZrrrrWss  z&AbstractTemplateEnginePlugin.transformNN)NNF)NFN) rrrrr:rGrArNrVrXrWrrrrr %s  *   r cs@eZdZdZeZdZd ddZd fdd Zfd d Z Z S) rz6Implementation of the plugin API for markup templates.z.htmlNcCszt||||jd}|r"t|}|durtd|||_nd|_|jdd}|dvr8td|||_dS)Nzgenshi.default_doctypezUnknown doctype %rzgenshi.default_formathtml)r_xhtmlxmltextzUnknown output format %r) r rAr-r.rr default_doctyper3rQ)r<r=r-rcdoctyperSrrrrAs     z#MarkupTemplateEnginePlugin.__init__Fcs*tt|||}|jr|s|j|d<|S)Nrd)superrrVrcrR __class__rrrVs  z.MarkupTemplateEnginePlugin._get_render_optionscs<tttd}|jr||||tt|||S)r[r)rrrr,updatererrW)r<rYrZdatarfrrrWs  z$MarkupTemplateEnginePlugin.transformr]r^) rrrrr r:rGrArVrW __classcell__rrrfrrzs rc@s&eZdZdZeZdZdZdddZdS)rz4Implementation of the plugin API for text templates.z.txtrbNcCsJ|duri}|d}t|tjr|dv}|rt|_t|||dS)Nzgenshi.new_text_syntaxr) r.r0r1r2r3r r:r rA)r<r=r- new_syntaxrrrrAs   z!TextTemplateEnginePlugin.__init__r]) rrrrr r:rGrQrArrrrrs r)rr1 genshi.inputrrr genshi.outputrgenshi.template.basergenshi.template.loaderrgenshi.template.markupr genshi.template.textr r __all__ __docformat__r7r objectr rrrrrrs    U'