ó
Ïü-Oc           @   sÉ   d  d l  Z  d  d l Z d  d l Z d Z d Z d f Z d f Z e Z d e	 f d „  ƒ  YZ
 d e f d	 „  ƒ  YZ e  j d
 ƒ Z d e	 f d „  ƒ  YZ d e	 f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿNt	   paragrapht   blockt   nullt   macrot   Statec           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR      s   t   IllegalMarkupExceptionc           B   s   e  Z RS(    (   R   R   (    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR      s   s   \n[ ]*$t   Parserc           B   s†   e  Z d  „  Z d d d „ Z e d „ Z e d „ Z e d „ Z	 d „  Z
 e d „ Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z RS(   c         C   se   | |  _  | |  _ | |  _ d  |  _ t ƒ  |  _ | j |  j ƒ d |  j _ d  g |  _	 t
 |  _ d  S(   Ni    (   t   formatt   dialectt
   macro_funct   Nonet   environR   t   statet   initialize_statet   indext   nestingt   Truet   start_of_line(   t   selfR	   R
   R   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   __init__   s    				t    c         C   s%   |  j  | | | | r | ƒ  n d  ƒ S(   N(   R   R   (   R   t   namet   parsert   argstrt   content(    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   call_macro_func$   s    c         c   sÖ   t  r# t j d |  j | f IJn  | t k	 rÒ |  j | k rÆ x |  j t ƒ D] } | VqN W| d  k	 r± t |  j | d d „  ƒ } x) | |  j	 d |  j
 ƒ D] } | VqŸ Wn  |  j
 j d 7_ n  | |  _ n  d  S(   Ns   transitioning %s => %st   _startc         S   s   d S(   N(    (    (   t   st   e(    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   <lambda>1   s    iÿÿÿÿi   (   t   debugt   syst   stderrR   t   Falset   flush_hR   t   getattrR	   R   R   R   (   R   R   t   wet   stat   p(    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   transition_to_environ(   s     	 c   (      #   s  t  r t j d | IJn  | j d ƒ s< | d 7} t } n t } x•| rÙt  rh t j d ˆ  j IJn  ˆ  j s• ˆ  j d  k r¨ t	 ˆ  j
 ƒ d k r¨ d | } t } n t } d  } d  } t j } d  } x8d) D]0}	 x't ˆ  j |	 ƒ D]}
 |
 d } |	 d k r| d } n  |	 d k r0| ˆ  j ƒ } n  | rat	 |
 ƒ d	 k rad
 |
 d k rad } n d } t j | t j ƒ j | | ƒ } | ré | j ƒ  | k  ré t  rÕt j d |	 t | j ƒ  ƒ | j ƒ  f IJn  |
 } | j ƒ  } | } | } |	 } qé qé WqÐ W| s#| r| d } n  | r0| d  } n  t	 | ƒ d k rÒˆ  j d  k r¾t  rqt j d t	 | ƒ IJn  x, ˆ  j j ˆ  j
 d ˆ  j ƒ D] }
 |
 Vq‘Wˆ  j j d 7_ t ˆ  _ n  ˆ  j j | ƒ Vn  | r	ˆ  j d  k	 r	x ˆ  j t ƒ D] } | Vq÷Wn  t  rt j d IJn  d  S| | r2d n d k r%| |  j ƒ  sìt j | |  ƒ d  k	 ˆ  _ t  rt j d I| d I| IJn  ˆ  j d  k rìx, ˆ  j j ˆ  j
 d ˆ  j ƒ D] }
 |
 Vq¼Wˆ  j j d 7_ t ˆ  _ qìn  | rˆ  j j | d | !ƒ Vq%ˆ  j j | |  ƒ Vn  | j ƒ  } | d } | d  k	 sPt | ‚ t	 | ƒ d k rrt  | d ƒ n i  } | j! | ƒ t	 | ƒ d	 k rº| d	 | ˆ  ƒ } | j! | ƒ n  d
 | k rÐ| d
 =n  d | k r	x  ˆ  j" | d ƒ D] }	 |	 VqðW| d =n(| d k r¿t  r+t j d IJn  ˆ  j t# k r³x ˆ  j t ƒ D] } | VqJWt ˆ  j t# d d „  ƒ } x& | ˆ  j ˆ  j
 d ƒ D] }
 |
 VqWˆ  j j d 7_ n  t# ˆ  _ nr ˆ  j d  k r1t  rät j d IJn  x, ˆ  j j ˆ  j
 d ˆ  j ƒ D] }
 |
 VqWˆ  j j d 7_ t ˆ  _ n  | d k sI| d k r
d | k ri| d } | d =n t } | } | d d } | d  k	 r·| | } d } t } d } | rÄd | | f } n
 d | } | | j$ ƒ  } xÇt r§t j | | t j ƒ } | r`| j d ƒ d  k	 rÀ| r>| j d ƒ d  k s>t ‚ n  | d k r“| | j$ ƒ  | j$ ƒ  | j ƒ  | !} | | j$ ƒ  | j$ ƒ  | } Pq]| d 8} | | j$ ƒ  } | | j$ ƒ  7} q¤| sÌt ‚ | j d ƒ d  k	 sçt ‚ | t k r | d 7} n= x: | D]( } | j | ƒ | j | ƒ k rPqqW| d 7} | | j$ ƒ  } | | j$ ƒ  7} qát  rvt j d IJn  | | j$ ƒ  } ˆ  j j | j ƒ  ƒ Vt } PqáW| r
qE q
nNt	 | | j$ ƒ  ƒ } | rà| d 8} n  xñ d* D]é }	 xà t ˆ  j |	 ƒ D]Ì }  t	 |  ƒ d	 k  s 	d |  d k s 	|  d d t k rB	q 	n  |  d } |	 d k re	| d } n  |	 d k rƒ	| ˆ  j ƒ } n  t j | | | j$ ƒ  t j ƒ } | r 	| j ƒ  | k  r 	| j ƒ  } q 	q 	WqçW| | j$ ƒ  | j$ ƒ  | !} | | j$ ƒ  | } | j% d ƒ r9
‡  f d †  }! |! | ƒ } | d =nI | j% d ƒ rg
d „  }" |" | ƒ } | d =n ‡  f d  †  }# |# | ƒ } | | d! <n< | d k r¸
| d }$ | | j$ ƒ  } n t sË
t d" | ‚ | t& k rã
d# „  } nŽ | t' k rˆ  j( } ˆ  | d$ <nl y t ˆ  j | ƒ } WnF t) k
 rcx/ ˆ  j* d% | ˆ  j j+ j, f ƒ D] }% |% VqNWqE n Xˆ  j | d& <y  x | |   D] }& |& VqWWn9 t- k
 rÌ}' x' ˆ  j* d' |' j. ƒ D] }% |% VqºWn Xt ˆ  _ qE Wt  rýt j d( | ˆ  j f IJn  d  S(+   Ns   subparse_h! block=%ss   
s
   loop of %si   R   t   inlinet   entityi    i   t	   nopaddingi   s   %s matches %s at %siÿÿÿÿs#   PARA because no markup, len(bit)=%ds   /subparse_h bits   PARA because nonzero startR   t   BLOCKR   c         S   s   d S(   N(    (    (   R   R   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR   ’   s    s   PARA because not specifiedt   nestables%   (?<![~])(?P<mustart>%s)|(?P<muend>%s)s   (?<![~])(?P<muend>%s)t   muendt   mustarts   Couldn't find end!t   escapec            s   ‡  ‡ f d †  } | S(   Nc              s   ˆ j  j ˆ  ƒ S(   N(   R	   R1   (    (   R   R   (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   escð   s    (    (   R   R2   (   R   (   R   sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt
   esc_helperï   s    t   unparsedc            s   ‡  f d †  } | S(   Nc              s   ˆ  S(   N(    (    (   R   (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   unp÷   s    (    (   R   R5   (    (   R   sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt
   unp_helperö   s    c            s   ‡  ‡ f d †  } | S(   Nc             sÝ   ˆ j  j ˆ j ƒ t r0 t j d ˆ j  IJn  d  ˆ _ ˆ j j }  d ˆ j _ ˆ j	 } ˆ j  d d k ˆ _	 ˆ j
 ˆ  ƒ } | ˆ j d t ƒ 7} ˆ j  j ƒ  ˆ _ t rÄ t j d ˆ j IJn  |  ˆ j _ | ˆ _	 | S(   Ns   Nesting: %si    iÿÿÿÿt   tablet   reset_states   Unnesting: (   R   t   appendR   R    R!   R"   R   R   R   R   t   subparset   flushR#   t   pop(   t	   old_indext   old_start_of_linet   ret(   R   R   (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   contÿ   s$     
		 
	(    (   R   R@   (   R   (   R   sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   cont_helperþ   s    R   s   Unknown type %s!c           S   s   d S(   N(    (    (    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR     s    R   s9   //**Markup {{{%s}}} unimplemented in format {{{%s}}}!**//R   s
   //**%s**//s!   /subparse_h empty block=%s env=%s(   s   blocks   inlines   entity(   s   blocks   inlines   entity(/   R    R!   R"   t   endswithR   R#   R   R   R   t   lenR   t   maxintR%   R
   t   ret   compilet	   MULTILINEt   searcht   startt   reprt   groupR	   t   paragraph_startR   R   t	   PARAGRAPHR1   R$   t   isspacet   ENDS_WITH_NEWLINEt	   groupdictt   AssertionErrort   dictt   updateR)   R-   t   endt   gett   NULLt   MACROR   t   AttributeErrort
   subparse_ht	   __class__R   R   t   message((   R   t   bitt   is_blockt   rpaddedt   paddedt   bestt   typt	   beststartt   bestmt   tR(   t   patt   post   mt   bestpatR&   t   gdt   meaningt   argst   moreRI   R.   RT   t   macro_nestingt   macro_failedt   adjustt   eithert	   macro_bitt   endmR   t   nt   endstartt   bR3   R6   RA   t   thingR   t   gR   (    (   R   sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyRY   7   s¤    
		 -
		
(	! / 	   	
(
	
 	 	 	



	

 	

	

	)	 c         C   s   d j  |  j | d | ƒƒ S(   Nu    R]   (   t   joinRY   (   R   R\   R]   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR:   0  s    c         c   s¿   |  j  d  k r d  St r6 t j d |  j  | f IJn  t |  j |  j  d d „  ƒ } x& | |  j d |  j ƒ D] } | Vqo Wd  |  _  | r» t	 ƒ  |  _ |  j j
 |  j ƒ d |  j _ n  d  S(   Ns   Cleaning up %s rs=%st   _endc         S   s   d S(   N(    (    (   R   R   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR   7  s    iÿÿÿÿi    (   R   R   R    R!   R"   R%   R	   R   R   R   R   R   (   R   R8   RT   R(   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR$   2  s      		c         C   s   d j  |  j | ƒ ƒ S(   Nu    (   Rx   R$   (   R   R8   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR;   ?  s    c         C   s(   t  j |  j | d t ƒ|  j t ƒ ƒ S(   NR]   (   t	   itertoolst   chainRY   R   R$   (   R   t   markup(    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   fullparse_hA  s    c         C   s   d j  |  j | ƒ ƒ S(   Nu    (   Rx   R}   (   R   R|   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt	   fullparseD  s    c         C   s   |  j  j | ƒ S(   N(   R	   R1   (   R   Rv   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR1   F  s    c         C   s   |  j  S(   N(   R	   (   R   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt
   get_formatH  s    c         C   s   |  j  S(   N(   R
   (   R   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   get_dialectJ  s    N(   R   R   R   R   R   RM   R)   R#   RY   R:   R$   R   R;   R}   R~   R1   R   R€   (    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR      s   	ù					t   AbstractMarkupc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         c   sA   |  j  r= x% | j |  j  d t ƒD] } | Vq" Wd |  _  n  d  S(   NR]   R   (   t   junkRY   R   (   R   R   R   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   endblockN  s    		c         C   s%   d j  |  j | j d ƒ | | ƒ ƒ S(   Nu    s   
(   Rx   t   generatet   split(   R   R|   R	   R   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   evaluateT  s    c         c   s«   t  | |  | ƒ } d |  _ xj | D]b } | j ƒ  } | s\ xG |  j | ƒ D] } | VqJ Wq" |  j sq | |  _ q" |  j d | 7_ q" Wx |  j | ƒ D] } | Vq˜ Wd S(   s,   Takes an object with an iterator over lines.s   
N(   R   R   R‚   t   stripRƒ   (   R   t   markup_listR	   R   R   t   lR   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR„   W  s    		(   R   R   Rƒ   R†   R„   (    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR   M  s   		t   Unionc           B   s   e  Z d  „  Z RS(   c         G   sf   g  |  _  g  |  _ g  |  _ xD | D]< } |  j  | j  7_  |  j | j 7_ |  j | j 7_ q" Wd  S(   N(   R   R*   R+   (   R   t   must   mu(    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyR   i  s    			(   R   R   R   (    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyRŠ   h  s   (   RE   R!   Rz   RM   R-   RV   RW   R#   R    t   objectR   t	   ExceptionR   RF   RO   R   R   RŠ   (    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/markup.pyt   <module>   s   		ÿ 7