3
Off[(                 @   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ej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r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>   r   r   r   r   r   r   r   r   )name)er   r   r	   inline   s    r   c             C   s@   t | dsdS d| jkr$| jd= dS d| jkr2dS d| jd kS )NattrsF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"   z'(?P<head>[\*_/]+)([^ 	
\*_/]+)(?P=head)c             C   s<   | j  \}}|dkr d| d S |d	kr4d| d S |S d S )
Nz**z<b>z</b>*/_z<i>z</i>>   r$   r#   r%   )groups)mmodcontentsr   r   r	   realtags&   s    r*   Fc          
   C   sb   |r&t jt| } d|  d } t| }n8t| *}t jt|j } d|  d } t| }W d Q R X |S )Nz<body>z</body>)r   subr*   r
   openread)sourcestdindocr   r   r   r	   get/   s    

r1   c             C   s&   t jd}t|jdt| d d S )Nz[
	]+    )recompilereprr+   str)r   spacer   r   r	   fuckyou;   s    
r9   c                s   G fddd}G fddd|}dd fddj d	 x&t d
rlt jdkrl jd  qHW  fdd}|  S )Nc                   s4   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)selfr;   r:   r   r   r	   __init__D   s    z process.<locals>.Thingy.__init__c             S   s    | j s
d S | j jd d| _d S )N
T)r   appendr<   )r>   r   r   r	   endH   s     zprocess.<locals>.Thingy.endc                sb   | j s| jS d| _  j| j| _| js*t| jd krF| jjd| j n| jj| j | j| _| jS )NFr   )	r<   r   new_tagr;   r=   beforer:   insertinsert_after)r>   )r0   r   r	   currentL   s    

zprocess.<locals>.Thingy.current)	__name__
__module____qualname__rD   r   r<   r?   rB   rG   r   )r0   r   r	   Thingy@   s   rK   c                   s(   e Zd Zd fdd	Zdd Z  ZS )zprocess.<locals>.ListThingyTc                s.   j |rdnd}|j| t jd| d S )Nolulli)rC   rA   superr?   )r>   r:   Zorderedtop)	__class__r0   r   r	   r?   Z   s    
z$process.<locals>.ListThingy.__init__c             S   s    | j r
d S | jjd d| _ d S )Nr@   T)r<   r   Zinsert_before)r>   r   r   r	   rB   ^   s     zprocess.<locals>.ListThingy.end)T)rH   rI   rJ   r?   rB   __classcell__r   )r0   )rQ   r	   
ListThingyY   s   rS   c          	   3   sz  g  t  } fdd}g }x$| r>| j}|j|  | j  |} qW x$|D ]} t| trd j|  qHt| tr@tj| }|r|j	dr r| V  |j	d} t
j| od dk}fddD rdx,d d D ]}|sqވ j| | V  qW |r&d r> jd  | V  nd rd jd  qH rZ| jdkrZ| V   j|  qHW  rv| V  d S )Nc                 s    } g  | S )Nr   )ret)groupr   r	   commitj   s    z&process.<locals>.lines.<locals>.commitr    c                s   g | ]} r|qS r   r   ).0line)linesr   r	   
<listcomp>   s    z*process.<locals>.lines.<locals>.<listcomp>r   r   r   r   r   emr   r]   r]   r]   r]   r]   >   r   r   r   r   r\   r   r   )setnext_siblingrA   extract
isinstancer   r   nlStartmatchrU   nlsplitr   )r   seenrV   esZnexter'   Zend_newlinerY   r   )rU   rZ   r	   rZ   g   sL    




 



zprocess.<locals>.linesc                s   d y j d  W n tk
r&   d S X x j d D ]fdd} fdd}d krd}fdd}| rst j |  q|  q8td tr8d jd	sʈd jd
r|  q8d |  q8W d S )Nr   c                 sV   d dd  } dd  }j d}|j|  x|D ]}|j| q6W  j| d S )Nr      r   rN   )rC   rA   )headtailrN   r   )cur_listr0   rU   r   r	   	derp_list   s    


z)process.<locals>.mdify.<locals>.derp_listc                 sn   t dkr.td t r. jd  d S jd} d}xD ]}|pL|}| j| qBW |rj j|  d S )Nr   r   pF)lenra   r7   rA   rC   )rm   Zgotsomer   )r   r0   rU   r   r	   derp_p   s    

z&process.<locals>.mdify.<locals>.derp_pTc                  sV   sdS t d tsdS d jdr6jd dS d jdrRjd dS dS )NFr   z- rL   Tz* rM   )ra   r7   
startswithrC   r   )rk   r0   rU   r   r	   maybe_listaderp   s     

z/process.<locals>.mdify.<locals>.maybe_listaderpz- z* )r)   
IndexErrorr=   rA   ra   r7   rp   )r   rl   ro   Zpythonsucksrq   )r0   rZ   )r   rk   rU   r	   mdify   s*      
zprocess.<locals>.mdifybodyr)   r   r   c                 s   x rt  dr&t jr& jd  qt r6   jrD j q jr j xJ r j}  jdkrr  d S t r  | r|  P qR j qRW qP qW d S )Nr)   r   rt   )r   rn   r)   r   r_   r    r   )Znextcur)r   rs   r   r	   mdifyAll   s,    

zprocess.<locals>.mdifyAll)findr   rn   r)   )r0   rK   rS   ru   r   )r   r0   rZ   rs   r	   process?   s    14

rw   c       	      C   s   t | }t|d}|jdp|}|rV|j  t|j}|jdj| |jdj| t|}|jd}|rt|j	}n|g}|jd}x0|r|d }|j  |j
d kst|j| qW |j  ||fS )NFtitleZintitlert   contentr   r]   )r
   r1   rv   r`   r7   stringrA   replace_withrw   r)   r    r=   rF   Z	decompose)	templater.   ZdefaultTitleZtmplmkrx   Zbodry   derpr   r   r	   markdown   s*    



r   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>
template.xhtmlc             C   s^   t jjd}|s| }t jj|r:t|d
}|j S Q R X t|d}|jt W d Q R X tS )Nr|   rtZwt)	osenvironr1   pathexistsr,   r-   writedefaultTemplate)defaultr|   r   outr   r   r	   getTemplate  s    r   __main__r   Zpretty)F)N)r   )&bs4r   Zbs4.elementr   r   r   r   
subprocessr   r   sysr4   r
   r5   rd   ZNLPATDOTALLrb   ZnlEndr   r   r"   r   r*   r1   r9   rw   r   r   r   rH   argvr0   rx   r   printZprettifyr7   r   r   r   r	   <module>   s2   
	
	
 9


