3
VmW                 @   s   d Z ddlmZ ddlZddlmZmZ ddlm	Z	 ddl
mZmZmZ ejjejjeddd	Zed
dZdd Zdd ZdddZdd ZdddZedkre  dS )z
    weasyprint.navigator
    --------------------

    A WeasyPrint-based web browser. In your web browser.

    :copyright: Copyright 2011-2014 Simon Sapin and contributors, see AUTHORS.
    :license: BSD, see LICENSE for details.

    )divisionN)HTMLCSS)url_is_absolute)parse_qsbase64_encode	iteritemstestsZ	resourceszicon.pngz
   :root { font-size: 10pt }
)stringc             c   sh   | j dtgd}xR|jD ]H}|j|gj \}}}dt|jdjdd }||||j|j	fV  qW d S )NT)Zenable_hintingstylesheetszdata:image/png;base64,ascii
 )
Zrender
STYLESHEETZpagescopyZ	write_pngr   decodereplacelinksanchors)htmlZdocumentZpageZ	png_byteswidthheightdata_url r   T/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/weasyprint/navigator.py	get_pages   s    r   c          	   C   s"  dg}|j }| r&t| }|j} ||  |d | rJ|d ||  |d |d | r
xt|D ]\}}}}}|dj||| xH|D ]@\}	}
\}}}}|	dkrd|
 nd	|
 }|d
j||||| qW x.t|D ]"\}\}}|dj||d | qW |d qbW n|d dj|jdS )Na  <!doctype html>
<meta charset=utf-8>
<title>WeasyPrint Navigator</title>
<style>
  form { position: fixed; z-index: 1; top: 8px; left: 16px; right: 0; }
  nav, input { font: 24px/30px sans-serif }
  input:not([type]) { background: rgba(255, 255, 255, .9); border-width: 2px;
                      border-radius: 6px; padding: 0 3px }
  input:not([type]):focus { outline: none }
  body { margin-top: 0; padding-top: 50px }
  section { box-shadow: 0 0 10px 2px #aaa; margin: 25px;
            position: relative; overflow: hidden; }
  section a { position: absolute; display: block }
  section a[href]:hover, a[href]:focus { outline: 1px dotted }
  nav { margin: 25px }
</style>
<body onload="var u=document.forms[0].url; u.value || u.focus()">
<form action="/" onsubmit="
  window.location.href = '/view/' + this.url.value; return false;">
<input name=url style="width: 80%" placeholder="Enter an URL to start"
  value="z$" />
<input type=submit value=Go />
z<a href="/pdf/z
">PDF</a>
z</form>
z@<section style="width: {0}px; height: {1}px">
  <img src="{2}">
Zinternal#z/view/zR  <a style="left: {0}px; top: {1}px; width: {2}px; height: {3}px" href="{4}"></a>
z6  <a style="left: {0}px; top: {1}px;" name="{2}"></a>
<   z</section>
a=  
<nav>
<h2>Examples:</h2>
<ul>
  <li><a href="/view/http://www.webstandards.org/files/acid2/test.html">
      Acid2</a></li>
  <li><a href="/view/http://www.w3.org/Style/CSS/current-work">
      CSS specifications</a></li>
  <li><a href="/view/http://en.wikipedia.org/">
      English Wikipedia</a></li>
</ul>
</nav>
r   utf8)appendr   Zbase_urlr   formatr   joinencode)urlpartswriter   r   r   r   r   r   Z	link_typetargetZpos_xZpos_yZhrefZanchor_namer   r   r   render_template(   s8    r'   c             C   s,   | r(|r| d| 7 } t | s$d|  } | S d S )N?zhttp://)r   )r#   Zquery_stringr   r   r   normalize_urlk   s    r)   c       	         s6  df df fdd	}| d }|dkrHt td}||j dd	S Q R X n|jd
rt|dkrt|dd  | jd}t|djt	gd}|j
djddd pd}||ddd| fgdS |jdrt|dd  | jd}|t|S |dkr*t| jdpd}t|jddgd }|t|S |dddS )Nz200 OKztext/html; charset=UTF-8c                s,    |d|fdt t| fgt|  | gS )NzContent-TypezContent-Length)strlenlist)bodystatusheaderscontent_type)start_responser   r   make_responsev   s
    zapp.<locals>.make_responseZ	PATH_INFOz/favicon.icorbzimage/x-icon)r0   z/pdf/   ZQUERY_STRING)r#   )r   /   outzapplication/pdfzContent-Dispositionzattachement; filename=%s.pdf)r0   r/   z/view/   r   r#   r   s   <h1>Not Found</h1>z404 Not Found)r.   )openFAVICONread
startswithr+   r)   getr   Z	write_pdfr   rstriprsplitr'   r   )	environr1   r2   pathfdr#   r-   filenameargsr   )r1   r   appu   s,    

rF     c             C   s|   d}yddl m} W n tk
r(   Y nX ||| tddd d S td ddlm} ||| t}td|| f  |j  d S )	Nz	127.0.0.1r   )
run_simpleT)Zuse_reloaderZuse_debuggerzDCould not import Werkzeug, running without the reloader or debugger.)make_serverzListening on http://%s:%s/ ...)Zwerkzeug.servingrH   ImportErrorrF   printZwsgiref.simple_serverrI   Zserve_forever)porthostrH   rI   serverr   r   r   run   s    rO   __main__)N)rG   )__doc__
__future__r   os.pathos
weasyprintr   r   Zweasyprint.urlsr   Zweasyprint.compatr   r   r   rB   r!   dirname__file__r;   r   r   r'   r)   rF   rO   __name__r   r   r   r   <module>   s    
	C

$
