mò
säÅEc           @   sÌ  d  k  Z  d k l Z d k l Z l Z d k l Z l Z d k	 l
 Z
 d k l Z d k Te i ƒ  Z d „  Z d „  Z d	 „  Z d
 „  Z d  d d d „ Z d d  e d  d d d „ Z d d d „ Z d „  Z d „  Z d f  d „  ƒ  YZ d „  Z d „  Z d d „ Z d d „ Z d  d „ Z  d „  Z! d „  Z" d e i# f d „  ƒ  YZ$ d „  Z% e i& d e ƒ e i& d e ƒ e i& d e ƒ e i& d  e  ƒ e i& d! e! ƒ e i& d" e" ƒ e i' d# e% ƒ d  S($   N(   s   template(   s   Logs   UserProfile(   s   wikiwhats   thmspace(   s   User(   s   settings(   t   *c         C   s:   |  i d d ƒ }  |  i d d ƒ }  |  i d d ƒ }  |  S(   Nt   &s   &amp;t   <s   &lt;t   >s   &gt;(   t   st   replace(   R   (    (    tC   /home/raph/garden/ghestalt/../ghestalt/app/templatetags/ghmarkup.pyt	   htmlquote   s    c         C   s   |  i d d ƒ }  |  S(   Nt   "s   %22(   R   R   (   R   (    (    R   t   urlquote   s    c         C   s4   t  |  ƒ }  |  i d d ƒ }  |  i d d ƒ }  |  S(   Nt   +s   %2bt    (   R	   R   R   (   R   (    (    R   t   urlquoteplus   s    c         C   sÁ   t  |  ƒ } | d j o t Sn t | t ƒ o | i d ƒ } n t | ƒ oM t i	 i
 d | d ƒ i ƒ  d j p# t i	 i
 d | d ƒ i ƒ  d j Sn  t i	 i
 d | ƒ i ƒ  d j Sd  S(   Ns   wiki/RecentChangess   utf-8t   whats   /_thmi    s   /_stmt(   s   wiki/RecentChanges(   t   wikiwhatt   pageR   t   Truet
   isinstancet   unicodet   encodet   thmspacet   Logt   objectst   filtert   count(   R   R   (    (    R   t
   wikiexists   s      Mt    c         C   sV  t  |  ƒ }  y t i i d |  ƒ } Wn d |  d Sn Xy t i i d | i ƒ } Wn d |  d Sn Xd } | i
 t i d  j oP | d | i
 j o< | i d | i i d	 ƒ } d i t d
 „  | ƒ ƒ } n | d j o< | i d | i i d	 ƒ } d i t d „  | ƒ ƒ } n | d  j o
 | } n d | d |  d | d S(   Nt   usernames   [deleted account t   ]t   userR   i   i   R   s   utf-8c         C   s   d t  |  ƒ S(   Ns   &#%d;(   t   ordt   x(   R   (    (    R   t   <lambda>1   s    c         C   s   d t  |  ƒ S(   Ns   &#%d;(   R   R   (   R   (    (    R   R    4   s    s   <a class="user" href="s   /user/s   ">s   </a>(   t   i18n_baselangt   unamet   UserR   t   getR   t   UserProfilet   idt   profilet   realnamet	   otro_langt   settingst   LANGUAGE_CODEt   lang_suffixt   otro_first_namet   otro_last_namet   decodet   joint   mapt
   first_namet	   last_namet   bodyt   Nonet	   i18n_base(   R"   R4   R6   R,   R'   R(   R   (    (    R   t   userlink$   s&    +
c         C   sÕ  t  | ƒ \ } } } |  i d ƒ } | d j o( |  |  i ƒ  } |  | d i
 ƒ  } nY |  i d d ƒ }	 t |	 ƒ d j o$ |	 d i ƒ  } |	 d i
 ƒ  } n |	 \ } d  } d } t i d | ƒ o | } }
 nt i d | ƒ o! t | d	 | d
 | d | ƒSnÐ t i d | ƒ } | o | | i ƒ   } n | }
 | o( | i d ƒ d j  o | d | } n | p | d  j o t | ƒ o
 d } n d } |  d j o | d  j o
 d } n t | d | d
 | ƒ} d } | d  j o» t i d |
 ƒ } | oN |
 | i ƒ  d } t i  | ƒ o& |
 | i ƒ   }
 d t | d } qUn t i d |
 ƒ o |
 d	 } q©t i d |
 ƒ o d |
 d d } q©|
 } n d | d t! | ƒ d t" | ƒ | d S(   Ns   ->i    i   t   |i   R   s   [a-z0-9\.\+]*://s   user/[^/]+$i   R6   R,   s	   /_[a-z]+$t   /s   class="wiki" s   class="new" s   wiki home pages   _[a-z][a-z]$s    (t   )s   wiki/s   bib/t   [i   R   s   <a s   href="s   ">s   </a>(#   t   parse_url_patht   pathR6   t   ctxR,   t   strt   rfindt   post   rstripR4   t   lstript   linkt   splitt   linklt   lenR5   t   aclasst   ret   matcht   urlt   linktextR7   t   searcht   mt   startt   findt   existsR   t   wikiurlt   langtextt   langcodet   LOCALIZED_LANGAUGE_NAMESt   has_keyR	   R   (   R?   R=   RQ   t
   ispreblockR>   R,   R6   RT   RA   RF   RL   R4   RS   RD   RH   RK   RN   (    (    R   t   wikilink9   sT    	!  !


c         C   s   | d t |  ƒ | S(   NR9   (   R6   R   R   R,   (   R   R,   R6   (    (    R   RR   h   s    c         C   s   d t  |  ƒ d S(   Ns   <span class="sexp">s   </span>(   R   R?   (   R?   RW   (    (    R   t   wikighk   s    c         C   s3   | o d t |  ƒ d Sn d t |  ƒ d Sd  S(   Ns   <pre>s   </pre>s   <tt>s   </tt>(   RW   R   R?   (   R?   RW   (    (    R   t   wikipren   s    t	   ListStatec           B   s>   t  Z h  d d <d d <d d <Z d	 „  Z d
 d „ Z RS(   Nt   :s   <blockquote>s   <p>R    s   <ul>s   <div>t   #s   <ol>c         C   s   d |  _ d  S(   NR   (   t   selft   state(   R^   (    (    R   t   __init__x   s    R   c         C   sW  t  t |  i ƒ t | ƒ ƒ } t | ƒ o* t | ƒ t |  i ƒ j o | d 8} n |  i |  | | } t | ƒ o |  i | d d } n t | ƒ t |  i ƒ j o/ | i	 d ƒ o d } | d  |  i d } n8 |  i i	 d ƒ p |  i i	 d ƒ o | i d ƒ n | } | t | ƒ j  o@ | t |  i ƒ j  o* | | |  i | j o | d 7} qkn x? t |  i | ƒ D]* } | i |  i | d i d	 d
 ƒ ƒ qWx* | | D] } | i |  i | d ƒ q¸W| i	 d ƒ p | i	 d ƒ o | i d ƒ n | d j o | i | ƒ n | |  _ | d j o | i d	 d
 ƒ Sn d  S(   Ni   iÿÿÿÿR\   s   <p>R    R]   s   </li>i    R   s   </s   <li>R   (   t   minRG   R^   R_   t   bullett   it   newstatet   ltagst   tagt   endswitht   resultt   appendt   jt   reversedt   cR   (   R^   Rh   Rb   Rf   Rl   Rc   Rd   Rj   (    (    R   t   begblockz   s8    ) ,&)  (  	 (   s   <blockquote>s   <p>(   s   <ul>s   <div>(   s   <ol>s   <div>(   t   __name__t
   __module__Re   R`   Rm   (    (    (    R   R[   t   s   !	c         C   s¾   |  i d ƒ oB d i |  i d d ƒ d  ƒ } d i |  i d d ƒ d ƒ }  n d } |  i d ƒ d j o1 |  i d d ƒ d } | d j o
 d } q¥ n d } t |  ƒ } | | | f S(   Ns   /intl/R9   i   R   i    i   t   wiki(
   R=   t
   startswithR0   RE   R6   RP   t   rsplitR>   t   i18n_lang_suffixR,   (   R=   R,   R>   R6   (    (    R   R<   “   s    #c   (         s€  t  |  t ƒ p t |  d ƒ }  n t i d ƒ } t i d ƒ } t i d ƒ }	 t i d ƒ } t i d ƒ } t i d t i
 ƒ } h  d d	 <d
 d <d d <d d <d d <} h  d d <d d <d d <d d <}$ t ‡  d † } h  d d | f <d d | f <d d t f <d  d! t f <} x9 | i ƒ  D]+ \ } \ } } t i | ƒ | f | | <q>Wg  }
 d  } g  }" t ƒ  } | i |  ƒ d" g }& d# }' x¼|' t  |& ƒ j  o¨|& |' }! |' d$ 7}' | d0 j o | i" |! ƒ }  n d  }  | d  j o€ | i" |! ƒ p |  oi |" oK |" i$ ƒ  |
 i% d" i& g  } |" D] \ } } | | q@~ ƒ ƒ g  }" n |
 i% | ƒ d  } n8 | d  j o* |	 i" |! ƒ o | i* |
 d" d& ƒ q§n | i" |! ƒ o q§n | d  j oÇ | i" |! ƒ } |  o: |  i, d$ ƒ }# | i* |
 |  i, d$ ƒ ƒ } |  i. ƒ  } q©| oQ | i, d$ ƒ } | i* |
 d" d' t  | ƒ ƒ } |" i% | d" f ƒ | i. ƒ  } q©| i* |
 d" d( ƒ } d# } n d# } d" } xŸ| t  |! ƒ j  o‹| i2 |! | ƒ } t  |" ƒ o‰ |! i4 |" d) d# | ƒ } | d# j o^ | p | | i6 ƒ  j oC | |! | | !|" d) d$ 7} | t  |" d) d# ƒ } |" d) =q²qmn | oÉ| |! | | i6 ƒ  !7} | i, ƒ  } | i. ƒ  } | i9 | ƒ o | | | 7} | } nN|$ i9 | ƒ o? | d |$ | d
 7} |" i% | d* |$ | d
 f ƒ | } nÿ| | j o | | \ } } |' d$ | } } | d  j o | d+ j o | i" |! d+ ƒ } xŽ | t  |& ƒ j  oz | i2 |& | | ƒ } | o< | o5 | i6 ƒ  d# j p | i" |& | d+ ƒ o
 d  } n | o Pn | d$ d# } } qwW| o· | |' d$ j o |! | | i6 ƒ  !}  nS |! | d, }  x) t> |' | ƒ D] }% |  |& |% d, 7}  qRW|  |& | | i6 ƒ   7}  | | |  d- | ƒ7} | d$ }' |& | }! | i. ƒ  } q²qnR | d. j oD | t  |! ƒ j  o- |! | d/ j o | |! | 7} | d$ } qn | | j  o | | 7} | } qLq²| |! | 7} Pq²W|
 i% | ƒ q§W| i* |
 d" ƒ d, i& |
 ƒ S(1   Ns   utf-8s   \r?\ns   \s*$s   \s*\-{4,}\s*$s   ([:\*#]+)\s+s   (={2,6})\s*sÌ  
        [<>&\\] |          # HTML entities and backslash
	(?<!-)---?(?!-) |  # en and em dash, exactly 2 or 3 hyphens
	(?<!:)// |         # begin italic markup, but avoid URL's
	\*\* |             # begin bold markup
        \[\[ |             # open link
        \{\{\{ |           # open preformatted
        (?<![^\s\"\(])     # single char markup must follow whitespace
          ([#_\*\[])
          (?=\S)           # and not be followed by whitespace
	R   s   &lt;R   s   &gt;R   s   &amp;s   --s   &#x2013;s   ---s   &#x2014;t   _Rc   R    t   bs   //t   ems   **t   strongc            s   t  |  ˆ  d t ƒS(   NRW   (   RX   R?   R=   t   False(   R?   RW   (   R=   (    R   t   my_wikilink¸   s    R;   s   \]s   [[s   \]\]R]   s   {{{s   \}\}\}(?!\})R   i    i   s   </div>s   <hr />s   <h%d>s   <p>iÿÿÿÿs   </i   s   
RW   s   \s
   \{}_#[]*-/(   s   </div>N(@   R   R?   R   RI   t   compilet   eol_ret   blank_ret   rule_ret	   bullet_ret   head_ret   VERBOSEt
   special_ret   replst   emphsRx   Ry   RY   RZ   t   embedst   itemst   opent   closet   embedfnRh   R5   t   pcloset   stackR[   t	   liststateRE   t   linesRc   RG   t   lineRJ   t   bullet_mt   reverseRi   R0   t   _[1]t	   wikicloset	   htmlcloseRm   t   head_mt   groupRb   t   endRA   t   delimt   rlineRM   RN   RP   t   pos2RO   t   gt   mendRV   t   slinet   sposRW   t   end_mt   rangeRj   ((   R?   R=   R˜   R’   R   RN   R{   R“   RA   R}   Rh   R‡   R†   R   R   R‹   R‘   RW   R‚   R™   R|   Rš   Rˆ   R‰   R~   R›   R   R„   R–   Rœ   R—   Ry   RŽ   R   RŠ   Rb   Rƒ   Rj   RŒ   Rc   (    (   R=   R   t   process_ghmarkup¢   sâ    3*B 	 

$
7

 
 (

, 9
 

$
c         C   s   t  |  | ƒ S(   N(   RŸ   t   valueR=   (   R    R=   (    (    R   t   ghmarkup%  s    c         C   s‹   t  | ƒ \ } } } t i d |  ƒ o |  d  }  n t i d |  ƒ o# t |  d  d t	 d ƒ | ƒ Sn t |  d t	 d ƒ | ƒ Sd  S(	   Ns   /_normiúÿÿÿs   /talkiûÿÿÿR8   s	   Main pages   /talk|t   Discuss(
   R<   R=   R6   R>   R,   RI   RM   R    RX   Rt   (   R    R=   R,   R>   R6   (    (    R   t   talklink(  s     #c         C   s-   |  | j o d t | ƒ Sn d t |  ƒ S(   Ns   edit/(   R    R   R	   (   R    R   (    (    R   t   translatelink0  s    c         C   s¥   |  p t i d  }  n t |  ƒ d j o0 |  d d j o |  d }  q[ t i d  }  n t i |  ƒ o t |  Sn+ t i i |  ƒ o t i |  Sn	 d |  Sd  S(   Ni   i   iýÿÿÿRt   iþÿÿÿs   Uknown language: (   R    R*   R+   RG   RU   RV   t   LANGUAGES_DICT(   R    (    (    R   t
   prettylang5  s    c         C   s+   t  | ƒ \ } } } t |  d | d | ƒS(   NR6   R,   (   R<   R=   R6   R>   R,   R7   R"   (   R"   R=   R,   R>   R6   (    (    R   t   userlink_filterE  s    t   GhmarkupNodec           B   s   t  Z d „  Z d „  Z RS(   Nc         C   s   | |  _  d  S(   N(   t   nodelistR^   (   R^   R©   (    (    R   R`   J  s    c         C   s,   |  i i | ƒ } t | | d ƒ i d ƒ S(   Nt   url_paths   utf-8(   R^   R©   t   rendert   contextt   outputR¡   R   (   R^   R¬   R­   (    (    R   R«   L  s    (   Rn   Ro   R`   R«   (    (    (    R   R¨   I  s   	c         C   s#   |  i d ƒ } |  i ƒ  t | ƒ S(   Nt   endghmarkuptag(   R®   (   t   parsert   parseR©   t   delete_first_tokenR¨   (   R¯   t   tokenR©   (    (    R   t   ghmarkup_tagP  s    
R¡   t   ghlinkR£   R¤   R¦   R7   t   ghmarkuptag((   RI   t   djangot   templatet   ghestalt.app.modelsR   R%   t   ghestalt.app.log_whatR   R   t   django.contrib.auth.modelsR#   t   django.confR*   t   ghestalt.i18n.utilst   Libraryt   registerR   R	   R   R   R5   R7   Rx   RX   RR   RY   RZ   R[   R<   RŸ   R¡   R£   R¤   R¦   R§   t   NodeR¨   R³   R   Rf   (   R   R   R£   R¦   R§   R   R¤   R   R%   RR   RI   RŸ   R7   R·   R<   R#   R¨   R³   R   R[   R*   R¾   RY   RZ   R	   R   RX   R¡   (    (    R   t   ?   sB   						/				ƒ			