m
%Cc           @   sh   d  Z  d k Z d k Z d k l Z l Z l Z d k l Z d k	 l
 Z
 g  Z d f  d     YZ d S(   s   
    MoinMoin - MoinMoin Wiki Markup Parser

    @copyright: 2000, 2001, 2002 by Jrgen Hermann <jh@web.de>
    @license: GNU GPL, see COPYING for details.
N(   s   configs	   wikimacros   wikiutil(   s   Page(   s   webt   Parserc           B   sO  t  Z d  Z d Z g  Z e i Z d d d g Z e i	 d  Z
 d d i e  e i o d d i e i  p d Z d	 h  d
 e i <d e i <d e i d <d d e i	 e  <Z d h  d d <d e <d e
 <Z d Z d Z d h  d e <d e
 <d e <d e <d e <d e <d d i e e i	 e i i     <Z d Z e i   Z e e e d g e e    Z d   Z d   Z  d    Z! d!   Z" d"   Z# d#   Z$ d$   Z% d%   Z& d&   Z' d'   Z( d(   Z) d)   Z* d*   Z+ d+   Z, d,   Z- e. d-  Z/ d.   Z0 d/   Z1 d0   Z2 d1   Z3 d2   Z4 d3   Z5 d4   Z6 d5   Z7 d6   Z8 d7   Z9 d8   Z: d9   Z; d:   Z< d;   Z= d<   Z> d=   Z? d>   Z@ d?   ZA d@   ZB dA   ZC dB   ZD dC   ZE dD   ZF dE   ZG dF   ZH dG   ZI eI ZJ dH   ZK dI   ZL dJ   ZM dK   ZN dL   ZO dM   ZP dN   ZQ RS(O   s,  
        Object that turns Wiki markup into HTML.

        All formatting commands can be parsed one line at a time, though
        some state is carried over between lines.

        Methods named like _*_repl() are responsible to handle the named regex
        patterns defined in print_html().
    i   t
   attachmentt   inlinet   drawingu   "'}]|:,.)?!u5   http|https|ftp|nntp|news|mailto|telnet|wiki|file|irc|u   |t    uZ   (?:(?<![%(u)s%(l)s])|^)%(parent)s(?:%(subpages)s(?:[%(u)s][%(l)s]+){2,})+(?![%(u)s%(l)s]+)t   ut   lt   subpagest   ?t   parentu   (?:%s)?uI   %(url_guard)s(%(url)s)\:([^\s\<%(punct)s]|([%(punct)s][^\s\<%(punct)s]))+t	   url_guardu   (^|(?<!\w))t   urlt   punctu"   ^\s+(?:[0-9]+|[aAiI])\.(?:#\d+)?\su   ^\s+.*?::\su+  (?P<ent_numeric>&#(\d{1,5}|x[0-9a-fA-F]+);)
(?:(?P<emph_ibb>'''''(?=[^']+'''))
(?P<emph_ibi>'''''(?=[^']+''))
(?P<emph_ib_or_bi>'{5}(?=[^']))
(?P<emph>'{2,3})
(?P<u>__)
(?P<sup>\^.*?\^)
(?P<sub>,,[^,]{1,40},,)
(?P<tt>\{\{\{.*?\}\}\})
(?P<processor>(\{\{\{(#!.*|\s*$)))
(?P<pre>(\{\{\{ ?|\}\}\}))
(?P<small>(\~- ?|-\~))
(?P<big>(\~\+ ?|\+\~))
(?P<strike>(--\(|\)--))
(?P<rule>-{4,})
(?P<comment>^\#\#.*$)
(?P<macro>\[\[(%%(macronames)s)(?:\(.*?\))?\]\]))
(?P<ol>%(ol_rule)s)
(?P<dl>%(dl_rule)s)
(?P<li>^\s+\*\s*)
(?P<li_none>^\s+\.\s*)
(?P<indent>^\s+)
(?P<tableZ>\|\| $)
(?P<table>(?:\|\|)+(?:<[^>]*?>)?(?!\|? $))
(?P<heading>^\s*(?P<hmarker>=+)\s.*\s(?P=hmarker) $)
(?P<interwiki>[A-Z][a-zA-Z]+\:[^\s'\"\:\<\|]([^\s%(punct)s]|([%(punct)s][^\s%(punct)s]))+)
(?P<word>%(word_rule)s)
(?P<url_bracket>\[((%(url)s)\:|#|\:)[^\s\]]+(\s[^\]]+)?\])
(?P<url>%(url_rule)s)
(?P<email>[-\w._+]+\@[\w-]+(\.[\w-]+)+)
(?P<smiley>(?<=\s)(%(smiley)s)(?=\s))
(?P<smileyA>^(%(smiley)s)(?=\s))
(?P<ent_symbolic>&[a-zA-Z]+;)
(?P<ent>[<>&])
(?P<wikiname_bracket>\[".*?"\])
(?P<tt_bt>`.*?`)t   ol_rulet   dl_rulet   url_rulet	   word_rulet   smileysT   heading rule table tableZ tr td ul ol dl dt dd li li_none indent macro processor prec         K   s%  | |  _  | |  _ | i |  _ | i |  _ | i |  _ | i d t	  |  _
 d  |  _ | i d d  |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ t |  _ t |  _ d |  _ | i |  _ g  |  _ g  |  _ |  i h  d d i  t! i" |  i   <|  _ d  S(   Nt   line_anchorst
   start_linei    t
   macronamesu   |(#   t   rawt   selft   requestt   formt   getTextt   _t   cfgt   kwt   gett   TrueR   t   Nonet   macroR   t   is_emt   is_bt   is_ut	   is_striket   linenot   in_lit   in_ddt   in_pret   in_tablet   Falset   is_bigt   is_smallt	   inhibit_pt   _page_headingst   titlest   list_indentst
   list_typest   formatting_rulest   joint	   wikimacrot   getNames(   R   R   R   R   (    (    tG   /p/gems/public/moin/lib/python2.4/site-packages/MoinMoin/parser/wiki.pyt   __init__l   s0    																	c         C   s   |  i o& | i |  i i d   d |  _ n |  i oP d |  _ |  i i o | i |  i i d   n | i |  i i	 d   n |  i
 oP d |  _
 |  i i o | i |  i i d   n | i |  i i d   n d  S(   Ni    (   R   R)   t   resultt   appendt	   formattert   tableR&   t   in_pt	   paragrapht   listitemR'   t   definition_desc(   R   R8   (    (    R6   t   _close_item   s    

	
	c         K   s  t  |  d j o | d } d  } n | \ } } d } | i   } | i d  o | d } d } n | i d  o | d } n t	 i
 |  \ } }
 | d  j o! | o
 |
 } q| } d } nH | i t	 i  p  | p t |  i |  i   o |  i | |  Sn t	 i |  i |  \ } } } } t	 i | |  }	 | i d d  o' t	 i |  o |  i i d	 |	  Sn | d  j o |  i |  Sn |  i i d | |
  |  i i |  |  i i d  S(
   Ni   i    s
   wiki:self:i
   s   wiki:i   R   t
   pretty_urlt   src(    t   lent   url_and_textR   R   t   textt   is_self_referencet   lowert   url2t
   startswitht   wikiutilt
   split_wikit   tagt   tailt   CHILD_PREFIXt   PageR   R   t   existst
   _word_replt   resolve_wikit   wikitagt   wikiurlt   wikitailt   wikitag_badt	   join_wikit   hrefR   R   t	   isPictureR:   t   imaget   interwikilink(   R   RD   R   RT   RF   R   RE   RV   RU   RX   RM   RL   RH   RS   (    (    R6   t	   interwiki   s4    





3!$c   	      K   s(  |  i } t |  d j o | d } d	 } n | \ } } | d d j } | d d j } | i	 d d  d } t
 i | d t } | p | } d k l } | o |  i i | |  Sn | i d d  o$ t
 i |  o |  i i |  Sn | o |  i i | |  Sn |  i i | |  S(
   s.    This gets called on attachment URLs.
        i   i    t   it   dt   :t   want_unicode(   s
   AttachFileRA   N(   R   R   RC   RD   R   R   RE   R   R   t   splitRJ   t   url_unquoteR   t   MoinMoin.actiont
   AttachFileR:   t   attachment_drawingR   R   RY   t   attachment_imaget   attachment_inlinedt   attachment_link(	   R   RD   R   R   RE   Rd   R   R   R   (    (    R6   R      s&     	

$c         C   s    |  i |  _ |  i i |  i  S(   s   Handle underline.N(   R   R#   R:   t	   underline(   R   t   word(    (    R6   t   _u_repl   s     c         C   s    |  i |  _ |  i i |  i  S(   s   Handle strikethrough.N(   R   R$   R:   t   strike(   R   Rj   (    (    R6   t   _strike_repl   s     c         C   s   | i   d j o |  i o |  i i |  Sn | i   d j o |  i o |  i i |  Sn |  i |  _ |  i i |  i  S(   s   Handle small.s   ~-s   -~N(   Rj   t   stripR   R,   R:   RE   t   small(   R   Rj   (    (    R6   t   _small_repl   s     c         C   s   | i   d j o |  i o |  i i |  Sn | i   d j o |  i o |  i i |  Sn |  i |  _ |  i i |  i  S(   s   Handle big.s   ~+s   +~N(   Rj   Rn   R   R+   R:   RE   t   big(   R   Rj   (    (    R6   t	   _big_repl   s     c         C   s   t  |  d j oE |  i |  _ |  i o |  i o d |  _ n |  i i |  i  SnB |  i |  _ |  i o |  i o d |  _ n |  i i |  i  Sd S(   s!   Handle emphasis, i.e. '' and '''.i   i   N(   RC   Rj   R   R"   R!   R:   t   strongt   emphasis(   R   Rj   (    (    R6   t
   _emph_repl  s     c         C   sa   |  i |  _ |  i |  _ |  i o |  i o d |  _ n |  i i |  i  |  i i |  i  S(   s2   Handle mixed emphasis, i.e. ''''' followed by '''.i   N(   R   R"   R!   R:   Rt   Rs   (   R   Rj   (    (    R6   t   _emph_ibb_repl  s     c         C   sa   |  i |  _ |  i |  _ |  i o |  i o d |  _ n |  i i |  i  |  i i |  i  S(   s1   Handle mixed emphasis, i.e. ''''' followed by ''.i   N(   R   R"   R!   R:   Rs   Rt   (   R   Rj   (    (    R6   t   _emph_ibi_repl  s     c         C   s   |  i |  i j o
 d j n } |  i |  _ |  i |  _ | o* |  i i |  i  |  i i |  i  Sn' |  i i |  i  |  i i |  i  Sd S(   s*   Handle mixed emphasis, exactly five '''''.i    N(   R   R"   R!   t   b_before_emR:   Rs   Rt   (   R   Rj   Rx   (    (    R6   t   _emph_ib_or_bi_repl#  s     #*c         C   s7   |  i i d  |  i i | d d ! |  i i d  S(   s   Handle superscript.i   ii    N(   R   R:   t   supRE   Rj   (   R   Rj   (    (    R6   t	   _sup_repl/  s     c         C   s7   |  i i d  |  i i | d d ! |  i i d  S(   s   Handle subscript.i   i   ii    N(   R   R:   t   subRE   Rj   (   R   Rj   (    (    R6   t	   _sub_repl5  s     c         C   ss   |  i   |  i   } t |  d j o | |  i i   } n0 t t |  d  d } | |  i i |  } | S(   s   Handle sequences of dashes.i   i
   N(
   R   t   _undentt   _closePR8   RC   Rj   R:   t   rulet   mint   size(   R   Rj   R8   R   (    (    R6   t
   _rule_repl<  s     c         C   sK  | i t i  oQ | p
 | } n d i t d	 |  i	 i
 i i d  d  | t i g   } n | p4 | |  i	 i
 i j o |  i	 i |  Sn | } n | i t i  o" |  i	 i
 i d | t i } n | i d d  } d } t |  d j o | \ } } n |  i	 i d | d | |  i	 i |  |  i	 i d |  S(
   s   Handle WikiNames.t   /it   #i   R   i   t   anchori    N(   Rj   RI   RJ   t   PARENT_PREFIXRE   R3   t   filterR   R   R:   t   paget	   page_nameRa   t   PARENT_PREFIX_LENRN   t   CHILD_PREFIX_LENt   partsR   RC   t   pagelink(   R   Rj   RE   R   R   (    (    R6   RQ   I  s      
@
"c         C   s   |  i i | d  S(   s   Handle !NotWikiNames.i   N(   R   R:   t
   nowikiwordRj   (   R   Rj   (    (    R6   t   _notword_replf  s     c         C   sT   t  i |  i |  \ } } } } | o |  i	 i
 |  Sn |  i d | g  Sd S(   s   Handle InterWiki links.s   wiki:N(   RJ   RR   R   R   Rj   RS   RT   RU   RV   R:   RE   R\   (   R   Rj   RT   RU   RV   RS   (    (    R6   t   _interwiki_replj  s
     !c         C   s	  | i d d  d } | d j o |  i | g  Sn | |  i j o |  i | g  Sn t i |  oa t i	 |  i
 |  } | i d  d } d i | i d  d   } |  i i d	 | d
 |  Sn: |  i i d | d | |  i i |  |  i i d  Sd S(   s,   Handle literal URLs including inline images.R_   i   i    t   wikiR   iR   t   .RB   t   altt   cssN(   Rj   Ra   t   schemeR   R\   t   attachment_schemasR   RJ   RY   t   mapURLR   t   nameR3   R:   RZ   R   RE   (   R   Rj   R   R   (    (    R6   t	   _url_repls  s     c         C   s9   | d d !} | o |  i |  Sn |  i i |  Sd S(   s   Handle special-char wikinames.i   iN(   Rj   t   wikinameR   RQ   R:   RE   (   R   Rj   R   (    (    R6   t   _wikiname_bracket_repl  s
     c      	   C   sB  | d d j oc | d d !i d d  } t |  d j o | d } n d | d | d <|  i | d d Sn | d d !i d d  } t |  d j o | d } n | d d d j o? |  i i d | d  |  i i	 | d  |  i i d  Sn | d i d d  d } | d	 j o |  i | d d Sn | |  i j o |  i | d d Sn t i | d  o| t i |  i | d  ob |  i i d | d d
 d d d |  i i d | d d | d d | d  |  i i d  SnH |  i i d | d d
 | d d |  i i	 | d  |  i i d  Sd S(   s   Handle bracketed URLs.i   R_   i   is   wiki:Self:%si    RA   R   R   R   t   externalt	   do_escapet   titleR   RB   N(   Rj   Ra   t   wordsRC   R   R\   R   R:   R   RE   R   R   R   RJ   RY   t   ret   matchR   RZ   (   R   Rj   R   R   (    (    R6   t   _url_bracket_repl  s(     ?.bc         C   s=   |  i i d d | d d |  i i |  |  i i d  S(   s3   Handle email addresses (without a leading mailto:).i   s   mailto:R   t   mailtoi    N(   R   R:   R   Rj   RE   (   R   Rj   (    (    R6   t   _email_repl  s     c         C   s   |  i i |  S(   s   Handle SGML entities.N(   R   R:   RE   Rj   (   R   Rj   (    (    R6   t	   _ent_repl  s     c         C   s   |  i i |  S(   s7   Handle numeric (decimal and hexadecimal) SGML entities.N(   R   R:   t   rawHTMLRj   (   R   Rj   (    (    R6   t   _ent_numeric_repl  s     c         C   s   |  i i |  S(   s   Handle symbolic SGML entities.N(   R   R:   R   Rj   (   R   Rj   (    (    R6   t   _ent_symbolic_repl  s     c         C   s   g  } |  i pd |  i |  d |  _ d } |  i o |  i o
 d } n | i |  i	 i
 d d | d d  n d i |  S(   s+   Handle pure indentation (no - * 1. markup).i   t   gapt	   css_classt   styles   list-style-type:noneR   N(   R8   R   R&   R@   R   R   t   line_was_emptyt   first_list_itemR9   R:   R>   R3   (   R   R   R   R8   (    (    R6   t   _indent_repl  s     
	
)c         C   ss   g  } |  i |  d |  _ d } |  i o |  i o
 d } n | i |  i	 i
 d d | d d  d i |  S(   s   Handle type=none (" .") lists.i   R   R   R   s   list-style-type:noneR   N(   R8   R   R@   R&   R   R   R   R   R9   R:   R>   R3   (   R   R   R   R8   (    (    R6   t   _li_none_repl  s     	
%c         C   sm   g  } |  i |  d |  _ d } |  i o |  i o
 d } n | i |  i	 i
 d d |  d i |  S(   s   Handle bullet (" *") lists.i   R   R   R   N(   R8   R   R@   R&   R   R   R   R   R9   R:   R>   R3   (   R   R   R   R8   (    (    R6   t   _li_repl  s     	
c         C   s   |  i |  S(   s   Handle numbered lists.N(   R   R   R   (   R   R   (    (    R6   t   _ol_repl  s     c         C   s   g  } |  i |  d |  _ | i |  i i d  |  i i | d d !i	 d   |  i i d  |  i i
 d  g  d i |  S(   s   Handle definition lists.i   it    i    R   N(   R8   R   R@   R'   t   extendR:   t   definition_termRE   R   t   lstripR?   R3   (   R   R   R8   (    (    R6   t   _dl_repl  s     	Yc         C   s   t  |  i  o |  i d S(   s&   Return current char-wise indent level.iN(   RC   R   R0   (   R   (    (    R6   t   _indent_level  s     c         C   sx  g  } g  } |  i   | j o0 |  i o& | i |  i i d   d |  _ n x |  i   | j o |  i	 |  |  i
 d d j o |  i i d  } n= |  i
 d d j o |  i i d  } n |  i i d  } | i |  |  i d =|  i
 d =|  i
 o. |  i
 d d j o d |  _ q1d |  _ qR qR W|  i   | j  o |  i i |  |  i
 i |  |  i i o | i |  i i d   n | d j o |  i i d | |  } n6 | d j o |  i i d  } n |  i i d  } | i |  d |  _ d |  _ d |  _ n |  i o7 | p | o) |  i i d  g | d d +d |  _ n d i |  d i |  S(   s   Close and open lists.i    it   olt   dli   R   N(   t   opent   closeR   R   t	   new_levelR)   R9   R:   R;   R@   R1   t   number_listRL   t   definition_listt   bullet_listR0   R'   R&   t	   list_typeR<   R=   t   numtypet   numstartR   R3   (   R   R   R   R   R   RL   R   R   (    (    R6   t
   _indent_to  sN      


		c         C   s   g  } |  i |  x |  i d d d  D]s } | d j o | i |  i i d   q* | d j o | i |  i i d   q* | i |  i i	 d   q* Wg  |  _
 g  |  _ d i |  S(   s   Close all open lists.NiR   i    R   R   (   R8   R   R@   R1   t   typeR9   R:   R   R   R   R0   R3   (   R   R   R8   (    (    R6   R~   V  s      		c         C   s7   |  i i d  |  i i | d d ! |  i i d  S(   s   Handle inline code.i   i   ii    N(   R   R:   t   codeRE   Rj   (   R   Rj   (    (    R6   t   _tt_replh  s     c         C   s=   |  i i d d d |  i i | d d ! |  i i d  S(   s   Handle backticked inline code.i   R   t   backtickii    N(   R   R:   R   RE   Rj   (   R   Rj   (    (    R6   t   _tt_bt_replo  s     c            s   x' | o | d d j o | d } q W| p | d d j o h  d f Sn | d }     d  } t i   i | d |  \ } } | o d | } n | | f S(	   Ni    t   |i   t   <R   c   
         s  | i }	 d } |  d d j o | i   } | d j o5 d } |	 d  h  d | <d |  <d | <} qy t |   } Wn5 t
 j
 o) |	 d	  h  d |  <d | <} qXd
 |  | d <n|  d j of | i   } y t |  } Wn5 t
 j
 o) |	 d  h  d | <d |  <} qXd | | d <n|  d j of | i   } y t |  } Wn5 t
 j
 o) |	 d  h  d | <d |  <} qXd | | d <n!|  d j o d | d <n|  d j o d | d <n |  d j o d | d <n |  d j o d | d <n |  d j o d | d <n |  d j o | i   } y0 t |  d  j o
 t
  n t | d!  } Wn5 t
 j
 o) |	 d"  h  d | <d |  <} qXd# | | d$ <n d  }   i i |  S(%   NR   i    t
   0123456789t   %s6   Expected "%(wanted)s" after "%(key)s", got "%(token)s"t   wantedt   keyt   tokens0   Expected an integer "%(key)s" before "%(token)s"s   "%s%%"t   widtht   -s-   Expected an integer "%(arg)s" after "%(key)s"t   args   "%s"t   colspanR   t   rowspant   (s   "left"t   alignR_   s   "center"t   )s   "right"t   ^s   "top"t   valignt   vs   "bottom"R   i   i   s0   Expected a color value "%(arg)s" after "%(key)s"s   "#%s"t   bgcolor(   t   wiki_parserR   t   msgR   t   parsert	   get_tokenR   R   t   intt   dummyt
   ValueErrort   attrsR   RC   R   R   R:   R   (
   R   R   R   R   R   R   R   R   R   R   (   R   (    R6   t   table_extension  s^    	/''' 
't   >s%   <strong class="highlight">%s</strong>(   t   attrdefR   R   RJ   t   parseAttributesR   t   attrR   (   R   R   R   R   R   (    (   R   R6   t   _getTableAttrsw  s     
=! c         C   su   |  i oW d } |  i i o |  i i d  } n | |  i i d  |  i i d  7} | Sn |  i i |  Sd S(   s   Handle table row end.R   i    N(
   R   R)   R8   R:   R<   R=   t
   table_cellt	   table_rowRE   Rj   (   R   Rj   R8   (    (    R6   t   _tableZ_repl  s     
&c         C   sG  |  i o)g  } |  i |  \ } } |  i o) d |  _ | i |  i	 i
 d |   nD |  i	 i o | i |  i	 i d   n | i |  i	 i d   | i d  d j oQ | i d  p d | d <n | i d  p d | i d  d | d <qn | i |  i	 i d |  |  d	 i |  Sn |  i	 i |  Sd
 S(   s   Handle table cell separator.i    i   R   i   R   s   "center"R   s   "%d"R   N(   R   R)   R8   R   Rj   R   t   attrerrt   table_rowstartR9   R:   R   R<   R=   R   t   countt   has_keyR3   RE   (   R   Rj   R   R8   R   (    (    R6   t   _table_repl  s$     

	 # c   
   	   C   sE  d k  } | i   } d } x' | | | d !d j o | d 7} q Wt d |  } | | | !i   } |  i	 i
 i | } |  i i | d  |  i | c d 7<d }	 |  i | d j o d |  i | }	 n |  i   } | |  i	 i d | d d	 | i | i t i   i   |	 7} | |  i	 i |  |  i	 i d |  S(
   s   Handle section headings.Ni   t   =i   i    R   s   -%dt   ids   head-(   t   shaRj   Rn   t   ht   levelR   t   deptht
   title_textR   R:   R   R   t   pnttR/   t
   setdefaultt	   unique_idR   R8   t   headingt   newt   encodet   configt   charsett	   hexdigestRE   (
   R   Rj   R   R   R   R   R   R8   R   R   (    (    R6   t   _heading_repl  s$     	 Bc         C   s9  | d  d j o | d } n d	 |  _ d	 |  _ d |  _ | i   } | d j o- d } d |  _ |  i	   |  i
 i d  Sn7 | d  d j o% | d i   d } |  i |  n |  i o& | |  _ d |  _ | g |  _ d SnP | o; d |  _ |  i	   |  i
 i d  |  i
 i | d  Sn d |  _ d Sd	 S(
   s   Handle processed code displays.i   s   {{{i    s   #!R   i   i   s    (-)N(   Rj   R   R   t	   processort   processor_namet   processor_is_parserRn   t   s_wordR(   R   R:   t   preformattedRa   t   setProcessort   colorize_linesRE   (   R   Rj   R  R  (    (    R6   t   _processor_repl  s0     				
			2	c         C   s   | i   } | d j o5 |  i o* d |  _ |  i   |  i i |  i  SnA | d j o3 |  i o) d |  _ d |  _ |  i i |  i  Sn |  i i |  S(   s   Handle code displays.s   {{{i   s   }}}i    N(	   Rj   Rn   R   R(   R   R:   R  R-   RE   (   R   Rj   (    (    R6   t	   _pre_repl,  s     	!		c         C   s   |  i i |  S(   s   Handle smileys.N(   R   R:   R   Rj   (   R   Rj   (    (    R6   t   _smiley_repl:  s     c         C   s   |  i i |  S(   N(   R   R:   t   commentRj   (   R   Rj   (    (    R6   t   _comment_replA  s    c         C   s%   |  i i o |  i i d  Sn d S(   Ni    R   (   R   R:   R<   R=   (   R   (    (    R6   R   D  s    c         C   s   | d d !} d |  _ d } | i d  o& | i d d  \ } } | d  } n |  i d j o t	 i
 |   |  _ n |  i i |  i | |  S(   s   Handle macros ([[macroname]]).i   ii   R   iN(   Rj   t
   macro_nameR   R-   R   t   argsR   Ra   R    R4   t   MacroR:   (   R   Rj   R  R  (    (    R6   t   _macro_replI  s     	c         C   sK  g  } d } x | i |  D] } | | i   j  on |  i p |  i	 p
 |  i
 i p# | i |  i
 i d d d  n | i |  i
 i | | | i   !  n | i |  i |   | i   } q W|  i	 p |  i p
 |  i
 i o6 | t |  j  o# | i |  i
 i d d d  n | i |  i
 i | |   d i |  S(   s    Scans one line
        
        Append text before match, invoke replace() with match, and 
        add text after match.
        i    i   R   t   line879t   line886u    N(   R8   t   lastpost   scan_ret   finditert   lineR   t   startR   R-   R(   R:   R<   R9   R=   RE   t   replacet   endRC   R3   (   R   R  R  R  R8   R   (    (    R6   t   scanY  s      !#*5#c         C   sO  g  } xB| i   i   D] \ } } | d
 j	 o | d j o |  i o' | d d g j o |  i	 i
 |  Sq |  i p$ |  i	 i p |  i p | |  i j p# | i |  i	 i d d d  n t |  d | d  } | i | |   d	 i |  Sq q Wd
 k } t d | d | i | i    d | i | i      d	 S(   s    Replace match using type name t   hmarkert   pret   enti   R   t   line903R   t   _replR   Ns   Can't handle match s   
(   R8   R   t	   groupdictt   itemsR   t   hitR   R   R(   R:   RE   R-   R<   t   no_new_p_beforeR9   R=   t   getattrR  R3   t   pprintt	   Exceptiont   pformatt   groups(   R   R   R%  R(  R  R8   R   (    (    R6   R  {  s      1#	?c      
   C   s  | |  _  |  i  i i |  _ |  i i d d  } |  i i o# d h  d |  i	 <d | <} n |  i
 i i d  t i | t i  } t i |  i t i  } t i |  i t i  } t i d t i  } t i d t i  } |  i
 i i d  |  i i   } |  i |  _ | i |  |  _ d	 |  _ d
 |  _  x"|  i D]} |  i d
 7_ |  i" o# |  i
 i# |  i  i$ |  i   n d
 |  _% |  i |  _& d	 |  _ d	 |  _' d	 |  _( |  i  oo t) } xK d' D]C } | i,   i- |  o' |  i
 i# |  i  i. |   t/ } PqqW| p d	 |  _  q)q>n |  i0 o|  i0 d
 j o d& |  _2 d	 |  _3 d } | i5   d  d j o+ | i5   d i   d	 } |  i6 |  n |  i2 o% d |  _0 | g |  _7 | |  _4 q>q|  i
 i# |  i8   |  i  i9 d
   d |  _0 n |  i0 d j o | i: d  } | d j o |  i7 i< |  q>n | |  o |  i7 i< | |   n |  i
 i# |  i8    |  i  i2 |  i4 |  i7 |  i3  } |  i
 i# |  |  `7 d	 |  _0 d& |  _2 | | d } | i5   p q>qqn| d 7} | i5   pp |  i> o) |  i
 i# |  i  i? d	   d	 |  _> n |  i  i@ o  |  i
 i# |  i  iA d	   n d
 |  _ q>n | iB |  } tD | iE d	   } d } d& }
 d& }	 | o | iB |  } | oj | iE d	  i5   i d  \ }
 }	 |
 d	 }
 |	 o% |	 d	 d j o tJ |	 d
  }	 n d& }	 d } qV| iB |  } | o
 d } qVn |  i
 i# |  iK | | |
 |	   |  i> o | | | d !d  j o | d! d" j o tD |  d# | j o |  iL o: |  iM o/ |  i
 i# |  i  iN d
 d$ d%  d
 |  _M n |  i  i@ o  |  i
 i# |  i  iA d	   n |  iO | | d  \ } } |  i
 i# |  i  i? d
 |  |  t/ |  _> n |  i> o{ | d  d j p= | | | d !d  j o% | d! d" j o tD |  d# | j o) |  i
 i# |  i  i? d	   d	 |  _> n |  iR | |  } |  i
 i# |  |  i0 d j o |  i
 i# |  i  iT    q>q>W|  i
 i# |  iU    |  i0 o  |  i
 i# |  i  i9 d	   n |  i  i@ o  |  i
 i# |  i  iA d	   n |  i> o  |  i
 i# |  i  i? d	   n d& S((   sv    For each line, scan through looking for magic
            strings, outputting verbatim any intervening text.
        s   
R   u%   (?P<notword>!%(word_rule)s)|%(rules)sR   t   rulest   compile_huge_and_uglys   ^\s*s   \r?\ni    i   s   ##s   #formats   #refreshs	   #redirects   #deprecateds   #pragmas   #forms   #acls	   #languageR   i   s   #!i   s   }}}iR   t   ulR   R   R   R   s   ||is   || i   R   s   list-style-type:noneN(	   s   ##s   #formats   #refreshs	   #redirects   #deprecateds   #pragmas   #forms   #acls	   #language(V   R:   R   R   t	   hilite_reR2   R  R,  R   t	   bang_metaR   R   t   clockR  R   t   compilet   UNICODER  R   t	   number_reR   t   term_ret	   indent_ret   eol_ret   stopR   t
   expandtabst   rawtextR   R%   Ra   t   linest   line_is_emptyt   in_processing_instructionsR  R   t   writet   line_anchordefR   R   R   R-   R*   t   foundt   piRG   RI   R  R   R(   R   R  R  R  Rn   R	  R
  R   R  t   findt   endposR9   t   resR)   R;   R<   R=   R   t   indentRC   t   groupt   indlent   indtypeR   R   R   R   R1   R&   R>   R   R   R   R  t   formatted_linet	   linebreakR~   (   R   R:   R7  RI  R   R  RG  R6  RD  R   R   R4  RA  R   R:  R,  RC  RE  R  R  RH  R@  R5  R   (    (    R6   t   format  s     	#		
 
#				
 	
		
		&		

 	$

"K" #\!
    
 c         C   s   |  i i } y( t i | d | d  |  _ d |  _ Wn` t i j
 oQ y( t i | d | d  |  _ d |  _ Wq t i j
 o d |  _ q Xn Xd S(   s:    Set processer to either processor or parser named 'name' R  t   processi    R   R    i   N(
   R   R   R   RJ   t   importPluginR   R  R  t   PluginMissingErrorR   (   R   R   R   (    (    R6   R	  T  s     (R   t   __name__t
   __module__t   __doc__t   cachingt   DependenciesRJ   R   R   R   t   escapet   punct_patternR3   R   t   url_schemast   url_patternt   chars_uppert   chars_lowerRN   R   R   R   R   t   mapt   smileyst   keysR2   R&  Ra   t   dictt   zipRC   R7   R@   R\   R   Rk   Rm   Rp   Rr   Ru   Rv   Rw   Ry   R{   R}   R   R   RQ   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R~   R   R   R   R   R   R  R  R  R  t   _smileyA_replR  R   R  R  R  RK  R	  (    (    (    R6   R       s   	 	8H%g."			-																					'											K				K		 		!						"		(   RQ  t   osR   t   MoinMoinR   R4   RJ   t   MoinMoin.PageRO   t   MoinMoin.utilt   webRS  R    (	   Rd  R4   R`  R    R   RS  RJ   R   RO   (    (    R6   R      s   