
    Df                         d Z ddlZg dZ G d d          Z G d d          Z G d d	          Z G d
 d          Z G d d          ZdS )z*
Interface to various templating engines.
    N)render_cheetahrender_genshirender_makocachec                       e Zd ZdZd Zd ZdS )r   zRendering interface to Cheetah Templates.

    Example:

        render = render_cheetah('templates')
        render.hello(name="cheetah")
    c                      ddl m} || _        d S )Nr   Template)Cheetah.Templater
   path)selfr   r
   s      C/var/www/media/lib/python3.11/site-packages/web/contrib/template.py__init__zrender_cheetah.__init__   s    ------			    c                 r    ddl m t          j                            | j        |dz             fd}|S )Nr   r	   .htmlc                  H     | g          }|                                 S )N)file
searchList)respond)kwtr
   r   s     r   templatez,render_cheetah.__getattr__.<locals>.template   s'    dt444A99;;r   )r   r
   osr   join)r   namer   r
   r   s      @@r   __getattr__zrender_cheetah.__getattr__   sV    ------w||DItg~66	 	 	 	 	 	 r   N__name__
__module____qualname____doc__r   r    r   r   r   r   	   s<           	 	 	 	 	r   r   c                       e Zd ZdZd Zd ZdS )r   a"  Rendering interface genshi templates.
    Example:

    for xml/html templates.

        render = render_genshi(['templates/'])
        render.hello(name='genshi')

    For text templates:

        render = render_genshi(['templates/'], type='text')
        render.hello(name='genshi')
    c                 b    ddl m} |                    dd           | _         ||i || _        d S )Nr   )TemplateLoadertype)genshi.templater&   pop_type_loader)r   akwargsr&   s       r   r   zrender_genshi.__init__3   sC    222222ZZ--
%~q3F33r   c                     |dz   }| j         dk    rddlm} |}dn	d }| j         | j                            ||          fd}|S )Nr   textr   )TextTemplate)clsc                  t     j         di | }r|                              S |                                S )Nr#   )generaterender)r   streamr   r'   s     r   r   z+render_genshi.__getattr__.<locals>.templateH   sB    QZ%%"%%F '}}T***}}&r   )r*   r(   r0   r+   load)r   r   r   r0   r1   r   r   r'   s         @@r   r   zrender_genshi.__getattr__9   s    g~:444444CDDC:DLd,,	' 	' 	' 	' 	' 	' r   Nr   r#   r   r   r   r   $   s<         4 4 4    r   r   c                       e Zd ZdZd Zd ZdS )render_jinjazRendering interface to Jinja2 Templates

    Example:

        render= render_jinja('templates')
        render.hello(name='jinja2')
    c                     |                     dg           }|                     di           }ddlm}m}  | ||i ||          | _        | j        j                            |           d S )N
extensionsglobalsr   )EnvironmentFileSystemLoader)loaderr:   )r)   jinja2r<   r=   _lookupr;   update)r   r,   r-   r:   r;   r<   r=   s          r   r   zrender_jinja.__init__[   s    ZZb11
**Y++88888888"{##Q1&11j
 
 
 	##G,,,,,r   c                 N    |dz   }| j                             |          }|j        S Nr   r@   get_templater4   r   r   r   r   s       r   r   zrender_jinja.__getattr__f   '    g~L%%d++xr   Nr   r#   r   r   r8   r8   R   s<         	- 	- 	-    r   r8   c                       e Zd ZdZd Zd ZdS )r   zRendering interface to Mako Templates.

    Example:

        render = render_mako(directories=['templates'])
        render.hello(name="mako")
    c                 ,    ddl m}  ||i || _        d S )Nr   )TemplateLookup)mako.lookuprJ   r@   )r   r,   r-   rJ   s       r   r   zrender_mako.__init__v   s.    ......%~q3F33r   c                 N    |dz   }| j                             |          }|j        S rC   rD   rF   s       r   r   zrender_mako.__getattr__{   rG   r   Nr   r#   r   r   r   r   m   s<         4 4 4
    r   r   c                       e Zd ZdZd Zd ZdS )r   zCache for any rendering interface.

    Example:

        render = cache(render_cheetah("templates/"))
        render.hello(name='cache')
    c                 "    || _         i | _        d S N)_render_cache)r   r4   s     r   r   zcache.__init__   s    r   c                 h    || j         vrt          | j        |          | j         |<   | j         |         S rO   )rQ   getattrrP   )r   r   s     r   r   zcache.__getattr__   s4    t{"" 'd ; ;DK{4  r   Nr   r#   r   r   r   r      s<           ! ! ! ! !r   r   )	r"   os.pathr   __all__r   r   r8   r   r   r#   r   r   <module>rV      s     
E
E
E       6+ + + + + + + +\       6       *! ! ! ! ! ! ! ! ! !r   