³ò
Xß&Ic           @   sÜ   d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z d d d d d g Z d „  Z e i	 d ƒ Z
 e e
 d <d „  Z d e f d „  ƒ  YZ d „  Z e e d d „ Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿN(   t   etreeu   ---u   â€”u   --u   â€“u   ...u   â€¦u   ,,u   â€žu   "u   â€c         C   sP   t  | t ƒ o d i | ƒ } n x& t D] \ } } | i | | ƒ } q* W| S(   s?   XPath extension function converting all entites in passed text.t    (   t
   isinstancet   listt   joint   ENTITY_SUBSTITUTIONSt   replace(   t   contextt   textt   entityt   substitutution(    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyt   substitute_entities   s     s    http://wolnelektury.pl/functionsR   c      
   C   s^  t  i i t  i i t ƒ d ƒ } t i | ƒ } t i ƒ  } t	 i
 d t	 i t	 i Bƒ } t |  d ƒ } xE | D]= } | i d ƒ } | i d | ƒ } | i | i d ƒ ƒ qn W| i ƒ  | i d ƒ t i d t ƒ } t i | | ƒ }	 |	 i | ƒ }
 |
 i d ƒ d j	 oG t |
 i ƒ  ƒ t |
 i ƒ  ƒ |
 i | d	 t d
 t d d ƒt Sn t Sd S(   sB   Transforms file input_filename in XML to output_filename in XHTML.s   book2html.xslts   /\st   rs   utf-8u   <br/>
i    t   remove_blank_texts   //pt   xml_declarationt   pretty_printt   encodingN(   t   ost   pathR   t   dirnamet   __file__R    t   parset	   cStringIOt   StringIOt   ret   compilet	   MULTILINEt   UNICODEt   opent   decodet   subt   writet   encodet   closet   seekt	   XMLParsert   Truet   xsltt   findt   Nonet   add_anchorst   getroott   add_table_of_contentst   False(   t   input_filenamet   output_filenamet   style_filenamet   stylet   doc_filet   exprt   ft   linet   parsert   doct   result(    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyt	   transform"   s*    ! 
t   Fragmentc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s2   t  t |  ƒ i ƒ  | |  _ | |  _ g  |  _ d  S(   N(   t   superR8   t   __init__t   idt   themest   events(   t   selfR;   R<   (    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyR:   B   s    		c         C   s   |  i  i | | f ƒ d  S(   N(   R=   t   append(   R>   t   eventt   element(    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyR?   H   s    c         C   s—   g  } xy |  i  D]n \ } } | d j o | i d | f ƒ q | d j o1 y | i ƒ  Wq~ t j
 o d G| GHq~ Xq q W| i ƒ  |  i  | S(   Nt   startt   ends   CLOSED NON-OPEN TAG:(   R=   R?   t   popt
   IndexErrort   reverse(   R>   t   stackR@   RA   (    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyt   closed_eventsK   s    
 
c         C   så   g  } xÏ |  i  ƒ  D]Á \ } } | d j oX | i d | i d i d „  | i i ƒ  Dƒ ƒ f ƒ | i o | i | i ƒ qÔ q | d j o6 | i d | i ƒ | i o | i | i ƒ qÔ q | i | ƒ q Wd i | ƒ S(   NRB   u   <%s %s>t    c         s   s)   x" |  ] \ } } d  | | f Vq Wd S(   s   %s="%s"N(    (   t   .0t   kt   v(    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pys	   <genexpr>]   s    RC   u   </%s>R   (   RH   R?   t   tagR   t   attribt   itemsR   t   tail(   R>   R6   R@   RA   (    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyt	   to_stringY   s     6

c         C   s
   |  i  ƒ  S(   N(   RQ   (   R>   (    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyt   __unicode__i   s    (   t   __name__t
   __module__R:   R?   RH   RQ   RR   (    (    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyR8   A   s
   				c   	      C   s  h  } h  } xwt  i |  d d ƒD]`\ } } | i d d ƒ d j o”| d j p q" n | i d d ƒ d j oÑ t d | i d	 ƒ d
 | i ƒ } | i ƒ  i d d ƒ d j o€ | i ƒ  g } x? | d i ƒ  i d d ƒ d j o | i | d i ƒ  ƒ qÆ W| i ƒ  x" | D] } | i d | ƒ qWn | | | i	 <n] y | | i d	 ƒ } Wn+ t
 j
 o d |  | i d	 ƒ f GHn X| | | i	 <| | i	 =| i o, x) | D] } | | i d | i ƒ q²Wq‚q" t | i d d ƒ ƒ p | i d d ƒ d j oG | d j o6 | i o, x) | D] } | | i d | i ƒ q+Wq‚q" x+ | D]# } | | i | t i | ƒ ƒ q[Wq" W| | f S(   s-   Extracts theme fragments from input_filename.R=   RB   RC   t   classR   s   theme-begins	   theme-endR;   t   fidR<   s	   book-textiÿÿÿÿs   %s:closed not open fragment #%sR   t   namet
   annotation(   s   starts   end(   s   theme-begins	   theme-endN(   R    t	   iterparset   getR8   R   t	   getparentR'   R?   RF   R;   t   KeyErrorRP   t   lent   copy(	   R,   t   open_fragmentst   closed_fragmentsR@   RA   t   fragmentt   parentst   parentt   fragment_id(    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyt   extract_fragmentsm   sH     !&
 

 #2 # %c         C   s  | o† | d  j o
 | } n t i d d d | ƒ} | i d d ƒ t | ƒ | _ |  i o |  i | _ d |  _ n |  i d | ƒ n | oi t i d d d	 | ƒ} | i d d
 ƒ d | _ |  i o |  i | _ d |  _ n |  i d | ƒ n d  S(   Nt   at   hrefs   #%sRU   t   anchoru    i    RW   s   %st   targetu    (   R'   R    t   Elementt   sett   unicodeR   RP   t   insert(   RA   t   prefixt	   with_linkt   with_targett	   link_textRh   t   anchor_target(    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyt
   add_anchor¥   s$    

	
c         C   s0   x) |  i  ƒ  D] } | | ƒ o t Sq q Wt S(   N(   t   iterancestorsR$   R+   (   RA   t   testt   ancestor(    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyt   any_ancestor»   s
     c         C   sé   d } xÜ |  i  ƒ  D]Î } t | d „  ƒ o q n | i d j o` d | i d d ƒ j oG | d j p | d d j o t | d	 | d
 | ƒn | d 7} q d | i d d ƒ j o% t | d	 | d
 | ƒ| d 7} q q Wd  S(   Ni   c         S   s#   |  i  d  ƒ d j p |  i d j S(   RU   t   notet   mottot   motto_podpist
   dedicationt
   blockquote(   Rx   Ry   Rz   R{   (   RZ   RM   (   t   e(    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyt   <lambda>Å   s   t   pt   verseRU   R   i   i    s   f%dRq   t	   paragraph(   t   iterdescendantsRw   RM   RZ   Rs   (   t   roott   counterRA   (    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyR(   Â   s     )c         C   s'  g  } d } xý |  i  ƒ  D]ï } | i d j oÙ t | d „  ƒ o q n | i d j o\ t | ƒ oO | d d d j o: | d d i | | i d i | i d ƒ ƒ g  f ƒ n/ | i | | i d i | i d ƒ ƒ g  f ƒ t | d	 | d
 t ƒ| d 7} q q Wt	 i
 d ƒ } | i d d ƒ t	 i | d ƒ } d | _ t	 i | d ƒ } x¸ | D]° \ } } }	 }
 t	 i | d ƒ } t | d	 | d t d |	 ƒt |
 ƒ ob t	 i | d ƒ } xM |
 D]A \ } } }	 } t	 i | d ƒ } t | d	 | d t d |	 ƒqÆWq_q_W|  i d | ƒ d  S(   Ni   t   h2t   h3c         S   s)   |  i  d  ƒ d j p |  i  d ƒ d j S(   R;   t	   footnotesRU   s   person-list(   R‡   (   s   person-list(   RZ   (   R}   (    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyR~   ×   s    iÿÿÿÿi   R   s   text()s   s%dRo   t   divR;   t   tocu   Spis treÅ›cit   olt   liRp   Rq   i    (   R…   R†   (   R‚   RM   Rw   R]   R?   R   t   xpathRs   R+   R    Rj   Rk   t
   SubElementR   Rm   (   Rƒ   t   sectionsR„   RA   R‰   t
   toc_headert   toc_listt   nt   sectionR   t   subsectionst   section_elementt   subsection_listt
   subsectiont   _t   subsection_element(    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pyR*   Ò   s8     2:.	  )(   u   ---u   â€”(   u   --u   â€“(   u   ...u   â€¦(   u   ,,u   â€ž(   u   "u   â€(   R   R   R   R^   t   pkgutilt   lxmlR    R   R   t   FunctionNamespacet   nsR7   t   objectR8   Re   R$   R'   Rs   Rw   R(   R*   (    (    (    s<   /Users/zuber/Projekty/wolnelektury-git/lib/librarian/html.pys   <module>   s(   		

	,	8		