File: //opt/alt/python37/lib/python3.7/site-packages/paste/debug/__pycache__/wdg_validate.cpython-37.pyc
B
��]� � @ sX d Z ddlmZ ddlZddlmZ ddlZddlZdgZG dd� de �Z
d
dd �ZdS )z�
Middleware that tests the validity of all generated HTML using the
`WDG HTML Validator <http://www.htmlhelp.com/tools/validator/>`_
� )�StringION)�header_value�WDGValidateMiddlewarec @ s@ e Zd ZdZe�dej�Zd
dd�Zdd� Z d d
� Z
dd� ZdS )r ab
Middleware that checks HTML and appends messages about the validity of
the HTML. Uses: http://www.htmlhelp.com/tools/validator/ -- interacts
with the command line client. Use the configuration ``wdg_path`` to
override the path (default: looks for ``validate`` in $PATH).
To install, in your web context's __init__.py::
def urlparser_wrap(environ, start_response, app):
return wdg_validate.WDGValidateMiddleware(app)(
environ, start_response)
Or in your configuration::
middleware.append('paste.wdg_validate.WDGValidateMiddleware')
z</body>N�validatec C s || _ || _d S )N)�app�wdg_path)�selfr �global_confr � r
�I/opt/alt/python37/lib/python3.7/site-packages/paste/debug/wdg_validate.py�__init__% s zWDGValidateMiddleware.__init__c s t � � g �d� ��fdd� }| �||�}zx|D ]}� �|� q0W W d t|d�rX|�� X � �� }�\}}t|d�pvd} | �d�s�| �d�s�| �d�s�|gS g }
| �d �r�|
�d
� | � | j
|
|�}|�r| �||�d }|�dt
t|d
��f� |�dt
t|��f� |gS )Nc s �� | |f� �| ||� � jS )N)�extend�write)�status�headers�exc_info)�output�response�start_responser
r �writer_start_response- s z=WDGValidateMiddleware.__call__.<locals>.writer_start_response�closezcontent-type� z text/htmlz
text/xhtmlzapplication/xhtmlztext/xhtml+xmlz--xmlr zContent-Lengthzcontent-length)N)r r r �hasattrr �getvaluer �
startswith�append�call_wdg_validater � add_error�remove�str�len)r �environr r Zapp_iter�s�pager r �v�ops�html_errorsr
)r r r r �__call__) s8
zWDGValidateMiddleware.__call__c C sL t d krtd��t j|g| ddt jt jt jd�}|�|�d }|�� |S )Nz>This middleware requires the subprocess module from Python 2.4FT)�shell� close_fds�stdout�stdin�stderrr )�
subprocess�
ValueError�Popen�PIPE�STDOUT�communicate�wait)r r r% r# �procr* r
r
r r P s
z'WDGValidateMiddleware.call_wdg_validatec C sR dt �|� }| j�|�}|rD|d |�� � | ||�� d � gS || gS d S )NzR<pre style="background-color: #ffd; color: #600; border: 1px solid #000;">%s</pre>)�cgi�escape�_end_body_regex�search�start)r Z html_pager&