
pZTc           @   s   d  d l  Z  d  d l Z d  d l Td  d l Z d e f d     YZ e   Z d f  d     YZ d   Z d   Z	 d	 e f d
     YZ
 e d k r g  e
   j d  D] Z e e  ^ q GHn  d S(   iN(   t   *t   Symbolc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyR      s   t   inner_macro_itc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s(   | |  _  | |  _ t |  _ g  |  _ d  S(   N(   t	   macronamet   itt   Falset   closedt   macro_stack(   t   selfR   R   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyt   __init__   s    			c         C   s   |  S(   N(    (   R
   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyt   __iter__   s    c         C   s  d  } |  j j   } | j t k rt j rX t j d I|  j	 I| j
 I| j In  t j rt t j |  j IJn  | j
 t k r | j |  j	 k r |  j r | |  _ t  qt |  j  d k r|  j d | j k r|  j j   qq| j
 t k r|  j j | j d  qn  | S(   Nt   imii    i(   t   NoneR   t   nextt   stylet   MACROt   creolet   debugt   syst   stderrR   t   opt   argR	   t   ENDR   t   StopIterationt   lent   popt   STARTt   append(   R
   t   endmacronamet   t(    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyR      s"    	 +	 		(   R   R   R   R   R   (    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyR   
   s   		c         c   s   t  | |  } |  | | |  } x | D] } | Vq( W| j sT x | D] } qG Wn  | j s |   | d  k	 r t t d | | f  Vq t t d |  Vn | j Vx | D] } | Vq Wd  S(   Ns   Unclosed macro <<%s %s>>!s   Unclosed macro '%s'!(   R   R   R   t   Entityt   ERROR(   t
   macro_funct
   error_funcR   t   arglistR   t   imitt   mitt   i(    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyt   macro_it%   s     			c         C   s*   |  i |  d 6d |  k r d n d d 6f S(   Nt   urls   ://t   externalt   internalR   (    (   t   ht   sty(    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyt   default_link_func;   s    t   Parserc           B   sb   e  Z e d    d  Z d d d  Z d d d  Z d d d  Z e d  Z	 d d d  Z
 RS(   c           C   s   d  S(   N(   R   (    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyt   <lambda>A   s    c         C   s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   t   formatR"   t	   link_funcR#   (   R
   R1   R"   R2   R#   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyR   @   s    			c         C   sC   t  | t  s t |   |  j t j | |  j  d | d | S(   NR1   R2   (   t
   isinstancet
   basestringt   AssertionErrort   renderR   t   tokenizeR#   (   R
   t   markupR1   R2   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyt   parseG   s    c         C   s(   |  j  t j | |  j  d | d | S(   NR1   R2   (   t   irenderR   R7   R#   (   R
   R8   R1   R2   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyt   iparseL   s    c         C   s"   d j  |  j | d | d |  S(   Nu    R1   R2   (   t   joinR:   (   R
   t   tokensR1   R2   (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyR6   P   s    t   END_ENTITY_MACROc   !   :   c   sb  | d  k r |  j   } n  | d  k r3 |  j } n  t |  } g  } d } g  } t } g  }	 xt r]y | j   }
 Wn1t k
 rt j	 r t
 j t I| I|	 IJn  xz |	 r'|	 j   \ } } | d  k	 r| t d  g g k s t | | f   | } n  x | j | d   D] } | VqWq Wxz | r| j   \ } } | t k rX| } q+| t k rgq+| st t |    x | j | |  D] } | VqWq+WPn Xt j	 rt
 j |
 IJn  t |
 t  st t |  | t |
  f   |
 j } |
 j t k r| t k p&|
 j |  j k } |
 j t k oo| t k oo|	 oo| |	 d d k oo|	 d d d  k	 } |
 j t k r| t k rt j	 rt
 j d I| I|	 IJqn  t } t
 j d I| I|	 I|
 j I|
 j IJ| s|	 o|
 j t k o|
 j j   } t
 j d I|
 j I|	 I|
 IJ|	 r|
 j t k r|	 d d j r| r| j t k	 r| j r| t k s| t k r|	 j   \ } } d G| G|
 GH| d  k	 r| t d  g g k st | | f   | } n  | d 8} x" | j | d   D] } | Vq	Wn  | rT|
 j t k rT| j t k	 rT| j d  k	 s| s| rt| d d t k	 rt| s| rc| rc| rt j	 rt
 j d I| IJn  | j   \ } } n | rt j	 rt
 j d	 I| IJn  t } d  } nd | r"t j	 rt
 j d
 I|
 IJn  t } d  } n0 | j } |
 j } |
 j t k rLt } n t } t } | r	| s| s| t k	 r| j  r| d d t k	 r| d d t k	 r| j  | d d j  k s| r	| | d d k r| sF| t k sF| j  sF| d d t k sF| t k	 r| d d t k	 r| j  | d d j  k rt j	 rzt
 j d | d | d | | | | f	 IJn  t } xw | r| d d | k rPn  | j   \ } } | t k	 r| t! k	 rx" | j | |  D] } | VqWqqWt } t j	 rt
 j d I| IJn  | t k rPt j	 rDt
 j d I| IJn  | |
 _ q	| r	t j	 rut
 j d I|
 IJn  x" | j" t t  D] } | VqWq	q
| r	| t k	 r	| j  r	| j  | d d j  k r	| d \ } } t j	 rt
 j d I| In  t j	 r t
 j | I| IJn  | | k rxEt# | | d  D]X } | j   \ } } | | k sut | | f   x | j | |  D] } | VqWq?Wn | | k  r	x t# | d | d  D]; } | j$ | | g  x | j% | |  D] } | VqWqWnp | | k rt	| j   x | j | |  D] } | Vq-	W| j$ | | g  x" | j% | |  D] } | Vqb	Wn  t } | t k r	t j	 r	t
 j d IJq	q	q
| t k r
t j	 r	t
 j d IJq	q
nD t j	 r	t
 j d I| I| IJn  | r
| t k r
t |
 _ n  d G| G| GH| r|
| d d t k r|
| t k r|
|
 j t k r|
t j	 ro
t
 j d IJn  | j   n | rW| rW| s
| d d | k rW| t k	 r| j  rx t# |  D]C } | j$ | | d g  x# | j% | | d  D] } | Vq
Wq
WqW| j$ | | g  | t k	 rWx" | j% | |  D] } | VqBWqWn  d G| GHn | r| t k r| t k r|
 j t k r|
 j t k r|
 j j   rq` n  t j	 rt
 j d It Id I| IJn  x | j% t  D] } | VqW| j$ t d  g  nL | t k rbt j	 rbt
 j d I| I| I| I| I| I|	 IJqbn  |
 j |  j k rzq` q` |
 j t k rC| t k r/|
 j \ } } | r| d d t k r| j$ | d  n  | d  k	 st |
 j   | j   st | |
 j f   t& |  j' |  j( | | |  } qZ| r| d d t k rt j	 rnt
 j d I| I|
 IJn  | } t d  g g } | j) r| j$ | t! g  qn d  } |	 j$ | | g  | d 7} d G|	 G| GH| j r| |
 j |  \ } }  xG | j% | |   D] } | Vq	WqZx<| j% | |
 j  D] } | Vq1Wq` |
 j t k rS| t k raqZ|	 r{|	 d d | k st | |	 f   |	 j   \ } } | d  k	 r| t d  g g k st | | f   | } n  | d 8} | j r+| |
 j |  \ } }  xG | j | |   D] } | VqWqZx,| j | |
 j  D] } | VqAWq` |
 j t* k r| t k r|
 j \ } } | r| d d t k r| j$ | d  n  t+ j, |  j' | |  t |  j  g |  } qZ| t k rx| j" | |
 j  D] } | VqWqZ| j rt |
 j t-  s?t t |
 j    | |
 j |  \ } }  t | t-  slt  x | j% | |   D] } | VqWx | j. |  D] } | VqWxG | j | |   D] } | VqWqZx | j" | |
 j  D] } | VqWq` |
 j t k r.xN | j. |
 j  D] } | VqWq` |
 j t/ k rH|
 j Vq` t s` t |
   q` Wd  S(   Ni    ii   s   nmc?i   t   CHECKs   fwee!t	   mac_closet   nmcloset   text_when_closedt   breakt   tot   vias
   cleared tos
   clear EB=>s   clear so ENV_BREAKt   transs   oother EB cases   other EB cases	   start envt   ESs   pop Trues   ES!t   starts   due tot   Cs   Saving env_stackt   start_stack(0   R   R1   R2   t   iterR   t   TrueR   R   R   R   R   R   R   R5   t   endt   reprR3   t   TokenR   R   R   R   R>   R   t   TEXTt   stripR   t   linkt   envt   inlinet	   ENV_BREAKt	   PARAGRAPHt   groupt   SELFENVt   entityt   xrangeR   RH   R(   R"   R#   t   selfenvt   ENTITYt	   itertoolst   chaint   unicodet   textt   LITERAL(!   R
   R=   R1   R2   R   t	   env_stackt   start_deptht   macro_env_stackt
   env_closedRJ   R   t   oldstyt   oldenvt   sRS   t   envargt	   saved_envR   R-   t   is_macro_closet   is_nonmacro_closet   can_clear_envRB   t   dest_envR   t	   incr_donet   cleart   top_envt   top_argt   xR$   t   displayt   metadata(    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyR:   U   s   		 					 0		 +"'
	
$	 	 		 						 		 	 	 	 	 
		 	 	 &	 .	 "		 7!	 	
	,'	
		'		N(   R   R   R.   R   R   R9   R;   R6   t   OpR>   R:   (    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyR/   >   s   t   __main__s:   This* is a **bold** [[Plan|plan]] at ~** http://plan.com/.(   R   R]   R=   R   t   objectR   RX   R   R(   R.   R/   R   R7   R   t   dir(    (    (    sF   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/redbeans/parser.pyt   <module>   s   
			 9