
W                 @   s  d  d l  m Z d  d l m Z m Z m Z m Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d d   Z e j d  Z d Z e j d e d	 e j  Z e j d
 e d e j  Z d d   Z d d   Z d d   Z d d d  Z d d   Z d d   Z d d d  Z d Z d d d  Z e d k re e   e
 j d   \ Z Z d! e	 j  k rye! e j"    n e! e# e   d S)"    )BeautifulSoup)NavigableStringPreformattedStringCommentPageElementNc             C   s   t  |  d  S)Nzhtml.parser)r   )inp r   '/home/creation/stories/code/markdown.pyBeautifulSoupSucks   s    r
   z
+z\s*
\s*^z(.*)z(.*?)$c          	   C   s   |  j  d	 k S)
Naibusspanqsmall>   spanr   r   r   r   r   r   r   )name)er   r   r	   inline   s    r   c             C   sT   t  |  d  s d Sd |  j k r0 |  j d =d Sd |  j k rC d Sd |  j d k S)NattrsFZmdTclassauthor)hasattrr   )curr   r   r	   needsMD   s     
 r   c             C   s-   d } x  |  j  r( | d 7} |  j  }  q	 W| S)Nr      )parent)r   cr   r   r	   depth   s
    
r"   Fc          	   C   s]   | r# d |  d }  t  |   } n6 t |   ' } d | j   d }  t  |   } Wd  QRX| S)Nz<body>z</body>)r
   openread)sourcestdindocr   r   r   r	   get$   s    r(   c             C   s5   t  j d  } t | j d t |    d  d   S)Nz[
	]+    )recompilereprsubstr)r   spacer   r   r	   fuckyou.   s    r1   c                s   G f d d   d  } G f d d   d |  } d d      f d d     j  d	    x5 t   d
  r t   j  d k r   j d   qh W   f d d   } |    S)Nc                   sL   e  Z d  Z d Z d Z d Z d d   Z d d   Z   f d d   Z d S)	zprocess.<locals>.ThingyNTc             S   s%   | |  _  | |  _ |  j s! t  d  S)N)starttagendedAssertionError)selfr3   r2   r   r   r	   __init__7   s    		z process.<locals>.Thingy.__init__c             S   s*   |  j  s d  S|  j  j d  d |  _ d  S)N
T)r   appendr4   )r6   r   r   r	   end;   s    	 zprocess.<locals>.Thingy.endc                s   |  j  s |  j Sd |  _    j |  j  |  _ |  j s= t  |  j d  k re |  j j d |  j  n |  j j |  j  |  j |  _ |  j S)NFr   )	r4   r   new_tagr3   r5   beforer2   insertinsert_after)r6   )r'   r   r	   current?   s    		zprocess.<locals>.Thingy.current)	__name__
__module____qualname__r<   r   r4   r7   r:   r?   r   )r'   r   r	   Thingy3   s   rC   c                   s4   e  Z d  Z d    f d d  Z d d   Z   S)zprocess.<locals>.ListThingyTc                s?    j  | r d n d  } | j |  t   j d |  d  S)Nolulli)r;   r9   superr7   )r6   r2   Zorderedtop)	__class__r'   r   r	   r7   M   s    z$process.<locals>.ListThingy.__init__c             S   s*   |  j  r d  S|  j j d  d |  _  d  S)Nr8   T)r4   r   Zinsert_before)r6   r   r   r	   r:   Q   s    	 zprocess.<locals>.ListThingy.end)r@   rA   rB   r7   r:   r   )r'   )rI   r	   
ListThingyL   s   rJ   c          	   3   s  g    t    }   f d d   } g  } x0 |  rY |  j } | j |   |  j   | }  q* Wxn| D]f}  t |  t  r   j |   qa t |  t  rt j |   } | r | j	 d  r   r |   V| j	 d  }  t
 j |     o  d d k }  f d d    D   rx6  d  d  D]$ } | s:q+  j |  |   Vq+W| r d r  j  d  |   Vq d r  j  d  qa   r|  j d k r|   V  j |   qa W  r|   Vd  S)Nc                 s     }  g    |  S)Nr   )ret)groupr   r	   commit]   s    z&process.<locals>.lines.<locals>.commitr    c                s   g  |  ] }   r |  q Sr   r   ).0line)linesr   r	   
<listcomp>v   s   	 z*process.<locals>.lines.<locals>.<listcomp>r   r   r   r   r   emr   rT   rT   rT   rT   rT   >   spanr   rS   r   r   r   r   )setnext_siblingr9   extract
isinstancer   r   nlStartmatchrL   nlsplitr   )r   seenrM   esZnextemZend_newlinerP   r   )rL   rQ   r	   rQ   Z   sL    			

 

zprocess.<locals>.linesc                s0  d   y   j  d Wn t k
 r- d  SYn Xx    j  d  D]     f d d   }     f d d   }  d  k r d }    f d d   } |   r  s t    j   |   q(|   qB t  d t  rB  d j d	  s d j d
  r|   qB d   |   qB Wd  S)Nr   c                 so    d d d   }   d d   }  j  d  } | j |   x | D] } | j |  qG W  j |  d  S)Nr      r   rF   )r;   r9   )headtailrF   r   )cur_listr'   rL   r   r	   	derp_list   s    z)process.<locals>.mdify.<locals>.derp_listc                 s   t    d k r; t  d t  r;   j  d  d  S j d  }  d } x'  D] } | pf | } |  j |  qW W| r   j |   d  S)Nr   r   pF)lenrY   r/   r9   r;   )rf   Zgotsomer   )r   r'   rL   r   r	   derp_p   s    &z&process.<locals>.mdify.<locals>.derp_pTc                  sq    s
 d St   d t  s! d S d j d  rG  j d    d S d j d  rm  j d    d Sd S)NFr   z- rD   Tz* rE   )rY   r/   
startswithr;   r   )rd   r'   rL   r   r	   maybe_listaderp   s     z/process.<locals>.mdify.<locals>.maybe_listaderpz- z* )contents
IndexErrorr5   r9   rY   r/   ri   )r   re   rh   Zpythonsucksrj   )r'   rQ   )r   rd   rL   r	   mdify   s*      		

&
zprocess.<locals>.mdifybodyrk   r   r   c                 s   x   r t    d  r7 t   j  r7   j d   q t    rM       j rb   j   q   j r   j   xc   r   j }    j d k r     d  St    r     |  r |    Pqw   j   qw Wq Pq Wd  S)Nrk   r   rn   )r   rg   rk   r   rW   r    r   )Znextcur)r   rm   r   r	   mdifyAll   s,    	
					

zprocess.<locals>.mdifyAll)findr   rg   rk   )r'   rC   rJ   ro   r   )r   r'   rQ   rm   r	   process2   s    14'
rq   c       	      C   s  t  |   } t | d  } | j d  p- | } | r{ | j   t | j  } | j d  j |  | j d  j |  t |  } | j d  } | r | j	 } n	 | g } | j d  } x@ | r| d } | j   | j
 d  k s t  | j |  q W| j   | | f S)NFtitleZintitlern   contentr   rT   )r
   r(   rp   rX   r/   stringr9   replace_withrq   rk   r    r5   r>   Z	decompose)	templater%   ZdefaultTitleZtmplmkrr   Zbodrs   derpr   r   r	   markdown   s*    
		


ry   z<!DOCTYPE html>
<html>
  <head><meta charset="utf-8">
  <title/><link type="text/css" href="styles.css" rel="stylesheet" />
  </head>
<body><div id="page"><h1><intitle/></h1><content/></div></body></html>
ztemplate.xhtmlc             C   s}   t  j j d  } | s |  } t  j j |  rS t | d   } | j   SWd  QRXt | d   } | j t  Wd  QRXt S)Nrv   rtZwt)	osenvironr(   pathexistsr#   r$   writedefaultTemplate)defaultrv   r   outr   r   r	   getTemplate
  s    r   __main__r   Zpretty)$bs4r   Zbs4.elementr   r   r   r   
subprocessr   r{   sysr+   r
   r,   r\   ZNLPATDOTALLrZ   ZnlEndr   r   r"   r(   r1   rq   ry   r   r   r@   argvr'   rr   r|   printZprettifyr/   r   r   r   r	   <module>   s,   "$	
