ó
PlQTc        
   @   sá  d  d l  Z  d  d l Z d  d l m Z m Z m Z m Z m Z m Z m	 Z	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m  Z  d  d l! Td  d l" m# Z# d d l$ m% Z% d „  Z& d	 „  Z' d
 „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d d „ Z. e. e _. d „  Z/ e/ e _/ i dƒ d 6d„ d 6d… d 6d† d 6Z0 d „  Z1 e1 e _1 e d d  d! ƒ e _2 d" „  Z3 e3 e _3 d# „  Z4 e4 e _4 d$ „  Z5 e5 e _5 d% „  Z6 e6 e _6 d& „  Z7 e7 e _7 d' „  Z8 e8 e _8 e d( d) d* ƒe _9 d d+ „ Z: e: e _: e d, d- d. ƒe _; d/ „  Z< e< e _< d0 „  Z= d1 „  Z> e> e _> d d2 „ Z? e? e _? e? e _@ d d3 „ ZA eA eB eC ƒ eD eC ƒ ƒ e _E eA eF eG ƒ ƒ e _H i d4 d5 6ZI d6 „  ZJ d7 „  ZK eK d8 d9 d: ƒ e _L e _M eK d9 d8 d: ƒ e _N e _O d; „  ZP d< „  ZQ eQ d= d> d? d: d@ ƒeQ dA dB dC d: d@ ƒeQ dD dE dC d: dF ƒeQ dG dE dH d: dF ƒeQ dI dJ dK d: dL ƒeQ dM dN dO d: dM d4 dM ƒeQ dP dQ dR d: dS d4 dS ƒeQ dT dU dV d: dT d4 dT ƒeQ dW dX dY d: dW d4 dW ƒeQ dZ d[ d\ d: dZ d4 dZ ƒeQ d] d] d^ ƒ eQ d_ d_ d` ƒ eQ da db dc d: da d4 da ƒeQ dd db dc d: dd d4 dd ƒeQ de df dg d: dh d4 di dj dk ƒeQ dl dl dm ƒ dn „  ZR eR do ƒ e _S eR dp ƒ e _T dq ZU dr ZV ds „  ZW dt du „ ZX e dv d- dw ƒe _Y e dv d- dx ƒe _Z eX dy ƒ e _[ eX dz ƒ e _\ eX d{ ƒ e _] eX d| ƒ e _^ eX d} ƒ e __ eX d~ ƒ e _` eX d ƒ e _a eX d€ ƒ e _b e d ƒ e _c e d‚ ƒ e _d d S(‡   iÿÿÿÿN(   t   macrost   environmentt   illegalt   dividedt   WikiExceptiont   NoContentExceptiont	   safesplitt   parse_macro_argst   recurset   baz_evalt	   full_evalt   leafpropt   render_propvalt   render_allow_overridet
   get_formatt   get_elementt   get_current_elementt   get_propnamet   get_topthist   get_contextt   get_moverridet   atomt	   eoverridet	   moverridet   contextt   makeRestrictedt   tokens_textt   string_tokenize(   t   FORMATS(   t   *(   t   LATEX_SIZESi   (   t   customc         c   s?   t  t d | ƒ ƒ $ x t |  | ƒ D] } | Vq& WWd  QXd  S(   Nt   form(   R   t   dictR   (   t   enamet   pnameR    t   t(    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   moverride_thunk   s    c         C   s@   t  | d |  ƒ t  | d |  ƒ t  | d |  ƒ t  | d |  ƒ f S(   Nu   topleftu   toprightu
   bottomleftu   bottomright(   R%   (   R    R"   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   get_headfoot   s    c         c   sÄ   t  d ƒ Vx |  d D] } | Vq Wt  d ƒ Vt  d ƒ Vx |  d D] } | VqF Wt  d ƒ Vt  d ƒ Vx |  d D] } | Vqv Wt  d ƒ Vt  d ƒ Vx |  d	 D] } | Vq¦ Wt  d ƒ Vd  S(
   Ns   <div class="lheader">i    s   </div>s   <div class="rheader">i   s   <div class="lfooter">i   s   <div class="rfooter">i   (   t   Literal(   t   headfootR$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   html_div_headers   s     				c         c   sY   t  d ƒ Vx |  d D] } | Vq Wt  d ƒ Vx |  d D] } | Vq; Wt  d ƒ Vd  S(   Ns   <tr class="head"><td><span>i    s   </span><span>i   s   </span></td><td></td></tr>(   R'   (   R(   R$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   html_table_header/   s    		c         c   sY   t  d ƒ Vx |  d D] } | Vq Wt  d ƒ Vx |  d D] } | Vq; Wt  d ƒ Vd  S(   Ns   <tr class="foot"><td><span>i   s   </span><span>i   s   </span></td><td></td></tr>(   R'   (   R(   R$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   html_table_footer7   s    		c         c   s£   t  d ƒ Vx |  d D] } | Vq Wt  d ƒ Vx |  d D] } | Vq; Wt  d ƒ Vx |  d D] } | Vq` Wt  d ƒ Vx |  d D] } | Vq… Wt  d	 ƒ Vd  S(
   Ns   \lhead{i    s   }\rhead{i   s   }\lfoot{i   s   }\rfoot{i   s   }
(   R'   (   R(   R$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   latex_cmd_headers?   s    				c         c   sK   t  } x> |  D]6 } | s' t d ƒ Vn t } x | D] } | Vq4 Wq Wd  S(   Ns   }{(   t   TrueR'   t   False(   R(   t   firstt   hfR$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   latex_arg_headersM   s    c         C   s   d S(   sc   Placeholder that evaluates to 'sheet' or 'card' or 'badge' when
    evaluating headers and footers.t    (    (   t   arglistt   content(    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyR    W   s    c         c   s›  t  |  ƒ } d } d d d d g } xi | j ƒ  D][ \ } } | d k r^ t | ƒ j ƒ  } q1 | d k r| t d | ƒ } q1 t d | ƒ ‚ q1 W| j ƒ  s¥ d } n  t ƒ  t d k rt d | ƒ Vx t	 | ƒ D] } | VqÔ Wx | D] } | Vqê Wt
 t t ƒ Vt d	 ƒ Vn‚ t ƒ  t d
 k rt d ƒ Vx t | ƒ D] } | Vq@Wx | D] } | VqVWt
 t t ƒ Vt d ƒ Vn x | D] } | VqˆWd S(   s…   Render content as a sheet.  Takes an element to get headers and
    footers from, and optionally a 'color' parameter for paper color.R2   t   colori   u   sheets   Unknown arg '%s' in sheet!t   whitet   htmls   <div class="sheet %s">s   </div>t   texs   \begin{sheet}
s   
\end{sheet}N(    (    (    (    (   R   t   itemsR	   t   stripR&   R   R   R   R'   R)   t   Entityt	   ENV_BREAKR-   R,   (   R3   R4   t   argsR5   R(   t   keyt   valR$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   sheet]   s<    					g      
@i   i    t   normalgÍÌÌÌÌÌ@gÍÌÌÌÌÌ@t   largeg      @g333333@t   tallg      ø?iþÿÿÿt   minic         c   s  t  | d ƒ } t |  ƒ } d } d } d d d d  g } xŠ | j ƒ  D]| \ } } | d k rs t | ƒ j ƒ  } qF | d k r” t | ƒ j ƒ  } qF | d k r² t d | ƒ } qF t d | ƒ ‚ qF W| j ƒ  sÛ d	 } n  | t k rt d
 | d j t j	 ƒ  ƒ f ƒ ‚ n  t
 | ƒ d k r0t d ƒ ‚ nât
 | ƒ d k  rU| d }	 d }
 n | \ }	 }
 t ƒ  t d k r't d | | f ƒ Vx t | ƒ D] } | Vq–Wt d ƒ Vx |	 D] } | Vq·Wt d ƒ Vt d ƒ Vx |
 D] } | VqãWt d ƒ Vx t | ƒ D] } | Vq
Wt d ƒ Vnë t ƒ  t d k rÛt | \ } } } t | } t d | | | f ƒ Vt d ƒ Vx t | ƒ D] } | Vq‡Wx |	 D] } | VqWt d ƒ Vx |
 D] } | Vq¾Wt d ƒ Vn7 x |	 D] } | VqâWt t ƒ Vx |
 D] } | VqWd S(!   sŸ   Render content as a card.  Takes an element to get headers and
    footers from, and optionally a 'color' parameter for paper color
    and a 'size' parameter.t   flipR2   RA   R5   t   sizei   u   cards   Unknown arg '%s' in card!R6   s.   Unknown card size '%s'; valid options are: %s.s   , i   s%   More than one ##flip## in a ##card##!i    R7   s   <table class="card %s %s">
s   <tr class="body">
<td>
s   
</td>
s   <td>
s   
</td>
</tr>
s	   </table>
R8   s   \begin{card}{%sin}{%sin}{\%s}
s   \front{s   }
\back{s   }
\end{card}
N(   s   flip(    (    (    (    (   R   R   R9   R	   R:   R&   R   t   SIZESt   joint   keyst   lenR   R   R'   R*   R+   R   R,   R;   R<   (   R3   R4   t   partsR=   R5   RF   R(   R>   R?   t   frontt   backR$   t   wt   ht   font(    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   cardŠ   st    	"
					
				RE   RQ   t   signc   
      c   s  t  |  ƒ } d } d } d } d d d d g } xÆ | j ƒ  D]¸ \ } } | d k rj t | ƒ j ƒ  } q= | d k r… t | ƒ } q= | d k r£ t d | ƒ } q= | d k rå t | ƒ j ƒ  j ƒ  } | d k rõ t d	 ƒ ‚ qõ q= t d
 | ƒ ‚ q= W| j ƒ  sd } n  t ƒ  t	 d k rÚt
 d | j ƒ  | f ƒ Vx t | ƒ D] }	 |	 VqIWt
 d ƒ Vx | D] }	 |	 VqjWt
 d ƒ Vt
 d ƒ Vx | D] }	 |	 Vq–Wt
 d ƒ Vx t | ƒ D] }	 |	 Vq½Wt
 d ƒ Vn² t ƒ  t	 d k rkt
 d | f ƒ Vx t | ƒ D] }	 |	 VqWt
 d ƒ Vx | D] }	 |	 Vq-Wt
 d ƒ Vx | D] }	 |	 VqNWt
 d ƒ Vn! t d ƒ Vx | D] }	 |	 Vq}Wd S(   sÜ   Render content as a packet.  Takes a label for the outside and
    an element to get headers and footers from, and optionally a
    'color' parameter for paper color and a 'style' parameter ("envelope"
    or "folding").R2   t   EnvelopeR5   i   i   u   packett   stylet   Foldings:   The only valid packet styles are "envelope" and "folding"!s   Unknown arg '%s' in packet!R6   R7   s"   <table class="card packet %s %s">
s   <tr class="body">
<td>
s   
</td>
s   <td>
s   
</td>
</tr>
s	   </table>
R8   s
   \%sPacket{s   }{t   }u   Packet: N(    (    (    (    (   RS   RU   (   R   R9   R	   R:   R
   R&   t
   capitalizeR   R   R   R'   t   lowerR*   R+   R1   t   Text(
   R3   R4   R=   t   labelR5   RT   R(   R>   R?   R$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   packetÐ   sd    								c   	      c   s  t  |  ƒ } d } d } d d d d g } x„ | j ƒ  D]v \ } } | d k rd t | ƒ j ƒ  } q7 | d k r t | ƒ } q7 | d k r t d | ƒ } q7 t d | ƒ ‚ q7 W| j ƒ  sÆ d } n  t ƒ  t d k rTt	 d	 | ƒ Vt	 d
 ƒ Vx t
 | ƒ D] } | Vq Wx | D] } | VqWt	 d ƒ Vx | D] } | Vq7Wt	 d ƒ Vn« t ƒ  t d k rÞt	 d ƒ Vx t | ƒ D] } | VqWt	 d ƒ Vx | D] } | Vq Wt	 d ƒ Vx | D] } | VqÁWt	 d ƒ Vn! t d ƒ Vx | D] } | VqðWd  S(   NR2   R5   i   i   u   notebooks   Unknown arg '%s' in notebook!R6   R7   s   <div class="notebook %s">
s   <div class="front">s   </div>s   </div>
R8   s   \startnotebook{s   }{RV   s   
\endnotebook
u
   Notebook: (    (    (    (    (   R   R9   R	   R:   R
   R&   R   R   R   R'   R)   R1   RY   (	   R3   R4   R=   RL   R5   R(   R>   R?   R$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   notebook  sP    							c         c   sS  t  |  ƒ } d | k r1 t | d ƒ j ƒ  } n1 t t ƒ  d d ƒ } | d t ƒ  _ t | ƒ } t ƒ  t d k rº t d ƒ Vt	 | ƒ Vt d ƒ Vx | D] } | Vq Wt d ƒ Vn• t ƒ  t d k rt d ƒ Vt	 | ƒ Vt d	 ƒ Vx | D] } | Vqõ Wt d
 ƒ Vn= t
 t d ƒ Vt	 | ƒ Vt t d ƒ Vx | D] } | Vq@Wd S(   s-   Dummy page for previewing outside a notebook.i   t
   gknextpageR7   s	   <div><h2>s   </h2>
s   </div>R8   s   \begin{nbpage}{s   }
s   
\end{nbpage}
i   N(   R   R	   R:   t   getattrR   R]   t   unicodeR   R'   RY   t   Startt   HEADINGt   End(   R3   R4   R=   t   titleR$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   page7  s2    		c         c   s  t  |  ƒ } d } d } d } d d d d g } xÙ | j ƒ  D]Ë \ } } | d k rj t | ƒ j ƒ  } q= | d k rˆ t d | ƒ } q= | d k r© t | ƒ j ƒ  } q= | d k rø t | ƒ j ƒ  } d }	 | |	 k rt d d j |	 ƒ ƒ ‚ qq= t d | ƒ ‚ q= W| j ƒ  s!d } n  | t k rUt d | d j t j ƒ  ƒ f ƒ ‚ n  t	 ƒ  t
 d k rÆt d | j ƒ  | | f ƒ Vx t | ƒ D] }
 |
 Vq“Wx | D] }
 |
 Vq©Wt d ƒ Vn· t	 ƒ  t
 d k r\t | \ } } } t | } t d | | | | f ƒ Vx t | ƒ D] }
 |
 VqWt d ƒ Vx | D] }
 |
 Vq?Wt d ƒ Vn! t d ƒ Vx | D] }
 |
 VqnWd  S(   NR2   t   lightRA   R5   i   u   badgeRF   RT   t   darkt   simpleRD   s$   The only valid badge styles are: %s!s   , s   Unknown arg '%s' in badge!R6   s/   Unknown badge size '%s'; valid options are: %s.R7   s   <div class="badge %s %s %s">
s   </div>
R8   s    \NameBadge[%s]{%sin}{%sin}{\%s}{s   }{RV   u   Badge: (    (    (    (    (   s   lights   darkRg   RD   (   R   R9   R	   R:   R&   R   RH   RG   RI   R   R   R'   RX   R)   R   R1   RY   (   R3   R4   R=   R5   RT   RF   R(   R>   R?   t   valid_stylesR$   RN   RO   RP   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   badgeW  s^    	"		
		c         c   sÌ  t  |  ƒ } t | d# ƒ } t | ƒ d$ k s9 t | ƒ ‚ d  } d } d  } d } d  } d% d& d' d( g }	 x| j ƒ  D]þ \ }
 } |
 d k r£ t | ƒ j ƒ  } qv |
 d k rÍ t t | ƒ j ƒ  ƒ g } qv |
 d k rî t | ƒ j ƒ  } qv |
 d k rt | ƒ j ƒ  } qv |
 d k r3| } t	 d	 | ƒ }	 qv |
 d k rdt t | ƒ j ƒ  ƒ g g d } qv t
 d
 |
 ƒ ‚ qv W| j ƒ  sd } n  | d  k rßt | d d	 ƒ g } t | ƒ d k rß| j t | d d ƒ ƒ qßn  | d  k r t | d d	 ƒ } n  | d  k r%t d | d f ƒ } n  | j ƒ  } | d) k rPt
 d | ƒ ‚ n  t ƒ  t d k rQxÝ t t | ƒ ƒ D]É } t d | j ƒ  | f ƒ Vx t |	 ƒ D] } | Vq¤Wt d ƒ Vx | | D] } | VqÉWt d ƒ Vt d ƒ Vx | | D] } | VqùWt d ƒ Vt d ƒ Vx | D] } | Vq%Wt d ƒ VqvWt d ƒ Vnwt ƒ  t d k r§t d ƒ Vx t |	 ƒ D] } | Vq|Wt d | f ƒ Vx | d D] } | Vq¨Wt d  ƒ Vt | ƒ Vt d  ƒ Vx | d D] } | VqãWt t t ƒ Vt d  ƒ Vt | ƒ d k rmx | d D] } | Vq(Wt d  ƒ Vx | d D] } | VqMWt t t ƒ Vn t d  ƒ Vt d  ƒ Vx | D] } | VqŠWt d! ƒ Vn! t d" ƒ Vx | D] } | Vq¹Wd  S(*   NRE   i   i   u    R5   t   blurbt   locationRF   u   signs   Unknown arg '%s' in packet!R6   u   nameu   signbacku   blurbu   %s.%su   sizet   Bigt   Mediumt   Smalls0   Sign size must be big, medium, or small, not %s!R7   s   <div class="sign %s %s">
s   <h1 class="name">s   </h1>s   <div class="content">
s   </div>
s   <div class="blurb">R8   s
   \headfoot{s   }\Sign[\%s]{i    s   }{RV   u   Sign: (   s   flip(   i   i   (    (    (    (    (   Rl   s   Mediums   Small(   R   R   RJ   t   AssertionErrort   NoneR9   R	   R:   RY   R&   R   R%   t   appendRW   R   R   t   xrangeR'   RX   R)   R1   R;   R<   R-   (   R3   R4   R=   RK   t   nameR5   RF   Rk   Rj   R(   R>   R?   t   headfoot_enamet   iR$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyRR   ‹  s¬    %											c         c   sË  t  |  ƒ } t | d ƒ } | j d ƒ } t d | ƒ } t | ƒ t | ƒ k sW t ‚ t ƒ  t d k r•t d ƒ Vx t	 | ƒ D] } | Vq‚ Wd } t
 } xç t t | ƒ ƒ D]Ó }	 | |	 }
 t | |	 d ƒ } t d ƒ Vt t | d	 d
 ƒ ƒ Vt d ƒ Vx |
 D] } | Vq
Wt d ƒ V| | 7} | d k r]| sTt d ƒ Vt } n  d } q° | d k rxt d ƒ ‚ q° t d ƒ Vq° Wt d ƒ Vn2 x/ | D]' }
 x |
 D] } | Vq©Wt t ƒ VqœWd  S(   Nt   breaki   u   pagefoldR8   s   \begin{pagefold}
i    i   s   \pfpart{g      Y@gš™™™™™$@s   in}{s   }
id   s   \clearpage
s$   Pagefold side doesn't add up to 100!s   \hrule
s   \end{pagefold}
(   s   break(   R   R   t   popR&   RJ   Ro   R   R   R'   R,   R.   Rr   t   intt   strR-   R   R;   t   HRULE(   R3   R4   R=   RK   Rt   R(   R$   t   totalt   flippedRu   t   partt   height(    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   pagefoldç  sD    	
	
			t
   upsidedownt   texmodet   commandc      	   c   s½  t  |  ƒ } d | k sB d | k sB d | k sB t | ƒ d k rQ t d ƒ ‚ n  | d  k rl t d ƒ ‚ n  t | d ƒ j ƒ  } t | d ƒ j ƒ  } t t d | d | | f ƒ } t	 ƒ  t
 d k r+t d ƒ Vt d	 ƒ V| Vt d
 ƒ Vt d ƒ Vx | D] } | VqWt d ƒ Vt d ƒ VnŽ t	 ƒ  t
 d k r‡t d ƒ V| Vt d | | f ƒ Vx | D] } | VqjWt d ƒ Vn2 t t d ƒ Vx | D] } | VqœWt t d ƒ Vd  S(   Ni   i   i   s+   ##imageheader## takes exactly 3 parameters!s   ##imageheader## needs content!s	   %s^d%sx%sR7   s    <table class="imageheader"><tr>
s   <td>s   </td>
s   <th>
s   </th>
s   </tr></table>
R8   s   \imageheader{s   }{%spx}{%spx}{RV   (   R   RJ   R   Rp   R   R	   R:   R;   t   IMAGER   R   R'   R`   t   HEADERRb   (   R3   R4   R=   t   widthR~   t   imgR$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   imageheader  s<    6 			t   secrett   docs*   Mark this content as secret, for printing.c         c   så  t  |  ƒ } t | d ƒ } t | d ƒ } t | d ƒ } t | d ƒ } d | k rk t | d ƒ } n d } d | k r t | d ƒ } n d } t ƒ  t d k rËt d	 | | ƒ }	 t d
 | | ƒ }
 t d |
 ƒ Vt d |	 ƒ Vt d | ƒ Vt d | ƒ Vt d | ƒ Vt d | ƒ Vt d | ƒ Vt d | ƒ Vt d ƒ VxŠ | D]i } | j t k r¿| j t	 k rt d ƒ VqÄ| j t
 k rªt d ƒ VqÄt sÄt | ƒ ‚ q[| Vq[Wn x | D] } | VqÒWd  S(   Ni   i   i   i   i   i    i   R8   g      &@g      !@s   \LabelCols=%s
s   \LabelRows=%s
s   \LeftPageMargin=%sin
s   \RightPageMargin=%sin
s   \TopPageMargin=%sin
s   \BottomPageMargin=%sin
s   \InterLabelColumn=%sin
s   \InterLabelRow=%sin
s   \LabelSetup
s   \addresslabel{\centering s   }
(   R   R	   R   R   Rx   R'   RT   t   UNORDERED_ITEMt   opt   STARTt   ENDR.   Ro   (   R3   R4   R=   RO   RN   t   v_margint   h_margint   v_gapt   h_gapt   rowst   colsR$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   labels<  sB    c           C   s   d S(   Nt   1(    (    (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   current_rung  s    c         c   sá   |  d j  d d ƒ \ } } t | ƒ } t | ƒ } | j | ƒ } t ƒ  } t r¾ t t ƒ Vt t	 d | | f d  f ƒ Vt t ƒ Vt d ƒ Vt t ƒ Vt | j | ƒ ƒ Vt t ƒ Vn x t | | ƒ D] } | VqÎ Wd  S(   Ni    t   .i   s   %s.%su    (   t   splitR   R   t   get_propvalR–   R.   R`   t   STRIKER;   t   MACRORp   Rb   RY   t   BOLDt   get_overlayR   (   R3   R"   t   propnamet   elementt   propvalt   runR$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   runtimej  s    	 c         c   s‰   t  ƒ  t t ƒ Vt t ƒ Vt d ƒ V|  rE t d j |  ƒ ƒ Vn  | rd x | D] } | VqR Wn  t d ƒ Vt t ƒ Vt t ƒ Vd  S(   Nu   TODO: u    u    :TODO(   R   R`   Rœ   t   ITALICRY   RH   Rb   (   R3   R4   R$   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   todo}  s    c            s   ‡  ‡ f d †  } | S(   Nc         3   sØ   t  | d ƒ } t | ƒ d k r0 t d ƒ ‚ n  ˆ Vt t ƒ Vx | d D] } | VqK Wt t ƒ Vˆ  d  k	 ry ˆ  Vn  t | ƒ d k rÔ t t ƒ Vt t ƒ Vx | d D] } | Vq¬ Wt t ƒ Vt t ƒ Vn  d  S(   NRv   i   s   Too many parts in a quote!i    i   (   s   break(   R   RJ   R   R`   R£   Rb   Rp   t   RIGHT(   R3   R4   RK   R$   (   t   endt   start(    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   envŽ  s"    		(    (   R§   R¦   R¨   (    (   R¦   R§   sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   quote  s    t   At   ?c         C   s  d } t  ƒ  } | d  k	 s! t ‚ t | | d ƒ } d | k rR t d | ƒ ‚ n  | d d !j ƒ  } d |  k r— |  d t d	 ƒ g |  d
 |  d <n  x+ d D]# } | |  k rž |  d |  | <qž qž W| t k rÞ t | } n  | |  k rò |  | St d | ƒ ‚ d  S(   Nu   genderR«   t    s   Unknown gender '%s'i    i   Rª   t   Mu   /t   Ft   Nt   Ss   Unknown gender: %s(   R¯   R°   (   R   Rp   Ro   R   R   t   upperRY   t   GENDER_CONV_MAP(   t   mfnat   genderpt   et   gen_fullt   gent   g(    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   pronoun_helper¦  s"    	&c             s   ‡  f d †  } | S(   Nc            s]   t  | d ƒ } i  } x; t t t ˆ  ƒ t | ƒ ƒ ƒ D] } | | | ˆ  | <q7 Wt | ƒ S(   NRv   (   s   break(   R   Rr   t   minRJ   R¹   (   R3   R4   RK   R³   t   x(   t   order(    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   mfnÀ  s
    ((    (   R¼   R½   (    (   R¼   sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   mfn_generic¿  s    R­   R®   R¯   c             sD   x+ ˆ  D]# } t  t ˆ  | ƒ ƒ g ˆ  | <q Wd  ‡  f d † } | S(   Nc            s
   t  ˆ  ƒ S(   N(   R¹   (   R3   R4   (   R³   (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   pnÍ  s    (   RY   R_   Rp   (   R³   t   kR¿   (    (   R³   sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   pronounÊ  s    !c            s]  | ˆ  d <| ˆ  d <d ˆ  k r7 d | | f ˆ  d <n  d ˆ  k rc |  j  d ƒ rc |  d ˆ  d <n  xj |  g ˆ  j ƒ  D]U } t t | ƒ sw t ˆ    } | |  k r° d | _ n	 d	 | _ t t | | ƒ qw qw Wt ‡  f d
 †  ˆ  Dƒ ƒ } |  d j ƒ  |  d }  xR |  g | j ƒ  D]= } t t | ƒ st |   } d | _ t t | | ƒ qqWd  S(   NR­   R®   Rª   s   %s/%sR°   t   thi   RÁ   t   pronounvariationc         3   s5   |  ]+ } | ˆ  | d  j  ƒ  ˆ  | d f Vq d S(   i    i   N(   R±   (   t   .0RÀ   (   R³   (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pys	   <genexpr>á  s    i    i   t   pronounupper(	   t
   startswitht   valuest   hasattrR    RÁ   t   hiddent   setattrR!   R±   (   t   macR­   R®   R³   t   aR¿   R±   (    (   R³   sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   _pronÑ  s(    

		t   theyt   het   shet   itt   themt   himt   hert   theirt   hist   itst   theirst   herst   themselft   himselft   herselft   itselft   spouset   husbandt   wifet	   offspringt   sont   daughtert   childt   kidt   boyt   girlt   siblingt   brothert   sistert   parentt   fathert   mothert   unclet   auntt   nephewt   niecet   persont   mant   womant   humant   gendert   malet   femalet   neutert	   uncertainR°   t   othert   mistert   missc            s   ‡  f d †  } | S(   Nc         3   sz   t  d ƒ } t  d ƒ | k r, t ˆ  ƒ VnJ t } x | D] } t } | Vq9 W| sv x t | d ƒ D] } | Vqd Wn  d  S(   Nu   currentu   leafu   name(   R   RY   R.   R-   R   (   R3   R4   t   currentt   had_contentR$   (   t   you(    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   yý  s    	(    (   R   R  (    (   R   sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   youishü  s    u   Youu   youu
   <<<pre/>>>u
   <<<suf/>>>c         C   sÇ  t  d „  d Dƒ ƒ } |  | d <t |  k re |  j t d ƒ \ }  | d <| d j t d	 ƒ | d <n+ d
 |  k r |  j d
 d ƒ \ }  | d <n  t |  k rÕ |  j t d ƒ \ | d <}  | d j t d	 ƒ | d <n  |  j ƒ  } t | ƒ d k sù t ‚ t | ƒ d k r| d | d <n| d rÑ| d j d ƒ rÑ| d | d <t | ƒ d k rk| d | d <q0t | ƒ d k r˜| d \ | d <| d <q0| d | d <| d | d <d	 j | d d !ƒ | d <n_ t | ƒ d k rú| \ | d <| d <n6 | d | d <| d | d <d	 j | d d !ƒ | d <| d pA| d | d <| d pY| d | d <| d r‰d | d | d f | d <n  d | k r¦| d | d <n  d | k rÃ| d | d <n  | S(   Nc         s   s   |  ] } | d  f Vq d S(   R2   N(    (   RÄ   RÀ   (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pys	   <genexpr>  s    R/   t   middlet   lastt   prefixt   suffixt   fulli   R¬   s   , i    R—   i   i   iÿÿÿÿt   informalt   formals   %s %st   surnamet   given(   s   firsts   middles   lasts   prefixs   suffix(	   R!   t   SUFR˜   t   replacet   PRERJ   Ro   t   endswithRH   (   Rs   t   gdt   bits(    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt	   parsename  sL    	

u   namec            s"   d  ‡  ‡ f d † } d | _ | S(   Nc      	   3   s¤   d j  |  ƒ } | j ƒ  r* | j ƒ  } n ˆ  } t ƒ  } t | | d t d t d t ƒ ƒ} | d  k r… t d | j	 | f ƒ ‚ n  t
 | ƒ } t | ˆ ƒ Vd  S(   Nu    t
   moverridest   pret   sufs&   %s.%s is not defined for name parsing!(   RH   R:   R   R   R!   R  R  Rp   R   R"   R  RY   (   R3   R4   t   argstrt   namepRµ   Rs   t   namedict(   t   namepropR}   (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   npB  s    	t   namepart(   Rp   RÉ   (   R}   R  R  (    (   R  R}   sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyR  A  s    	R¬   s4   Marks the end of a title or prefix for name parsing.s;   Marks the start of an end title or suffix for name parsing.R/   R  R  R  R  R
  R	  R  u   playeru   contact(   g      
@i   i    (   gÍÌÌÌÌÌ@gÍÌÌÌÌÌ@i    (   g      @g333333@i    (   g      @g      ø?iþÿÿÿ(e   t   syst   ret   bazbase.wikiR    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   R   t   bazbase.flavorsR   t   redbeans.tokenst   redbeans.latexR   R2   R   R%   R&   R)   R*   R+   R,   R1   Rp   R    R@   RG   RQ   RE   R[   R\   Rd   Ri   RR   R   R€   R‡   Rˆ   R”   R–   R¢   R¤   t   TODOR©   R`   t   CENTERRb   t   cenquoteR;   t   NOINDENTt   bigquoteR²   R¹   R¾   t   mfR½   t   fmt   fmnRÁ   RÍ   R  t   YouR   R  R  R  R  R  R  R/   R  R  R  R  R
  R	  R  t   playert   contact(    (    (    sV   /afs/athena.mit.edu/user/x/a/xavid/.local/lib/python2.7/site-packages/gameki/macros.pyt   <module>   sÄ   ²	
							
		#	
	C		9		+				2		Z		(	!		)										"		2