B
    ]"                 @   st  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dZdZede d	 ejZed
e d ejZdd Zdd Zdd ZdZdZddeee ed Zede d e d e d e 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rpe!e# e
j%d+ \Z&Z'd,e	j(krde)e&*  ne)e+e& dS )0    )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>   smallbqiuspansa)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\*_/u   	
 .?!“” z.?!z([z])(?P<head>[z]+)([z]+)(?P=head)([z])c             C   s   y|   \}}}}W n$ tk
r8   td|     Y nX |dkrHd}n|dkrVd}n
td||d | d | d	 | d | S )
Nuhhhz**r   >   *_/r   zhuh?<>z</)groups
ValueErrorprintRuntimeError)mheadmodcontentstailtagr   r   r	   realtags*   s    
r4   Fc          	   C   sb   |r&t t| } d|  d } t| }n8t| *}t t| } d|  d } t| }W d Q R X |S )Nz<body>z</body>)r   subr4   r
   openread)sourcestdindocr   r   r   r	   get9   s    

r;   c             C   s&   t d}t|dt| d d S )Nz[
	]+    )recompilereprr5   str)r   spacer   r   r	   fuckyouE   s    
rC   c                s   G fddd}G fddd|}dd fdd 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)startr3   endedAssertionError)selfr3   rD   r   r   r	   __init__N   s    z process.<locals>.Thingy.__init__c             S   s    | j s
d S | j d d| _d S )N
T)r   appendrE   )rG   r   r   r	   endR   s     zprocess.<locals>.Thingy.endc                sb   | j s| jS d| _  | j| _| js*t| jd krF| jd| j n| j| j | j| _| jS )NFr   )	rE   r   new_tagr3   rF   beforerD   insertinsert_after)rG   )r:   r   r	   currentV   s    

zprocess.<locals>.Thingy.current)	__name__
__module____qualname__rM   r   rE   rH   rK   rP   r   )r:   r   r	   ThingyJ   s   rT   c                   s(   e Zd Zd fdd	Zdd Z  ZS )zprocess.<locals>.ListThingyTc                s.    |rdnd}|| t d| d S )Nolulli)rL   rJ   superrH   )rG   rD   Zorderedtop)	__class__r:   r   r	   rH   d   s    
z$process.<locals>.ListThingy.__init__c             S   s    | j r
d S | jd d| _ d S )NrI   T)rE   r   Zinsert_before)rG   r   r   r	   rK   h   s     zprocess.<locals>.ListThingy.end)T)rQ   rR   rS   rH   rK   __classcell__r   )r:   )rZ   r	   
ListThingyc   s   r\   c             3   sz  g  t  } fdd}g }x$| r>| j}||  |   |} qW x$|D ]} t| trd |  qHt| tr@t| }|r|	dr r| V  |	d} t
| od dk}fddD rdx,d d D ]}|sqވ | | V  qW |r&d r> d  | V  nd rd d  qH rZ| jdkrZ| V   |  qHW  rv| V  d S )	Nc                 s    } g  | S )Nr   )ret)groupr   r	   committ   s    z&process.<locals>.lines.<locals>.commitr   r#   c                s   g | ]} r|qS r   r   ).0line)linesr   r	   
<listcomp>   s    z*process.<locals>.lines.<locals>.<listcomp>>   r   emr   r   r   r   r   )setnext_siblingrJ   extract
isinstancer   r   nlStartmatchr^   nlsplitr   )r   seenr_   esZnexter.   Zend_newlinerb   r   )r^   rc   r	   rc   q   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  |  q|  q8td tr8d d	sʈd d
r|  q8d |  q8W d S )Nr   c                 sV   d dd  } dd  } d}||  x|D ]}|| q6W  | d S )Nr      r   rW   )rL   rJ   )r/   r2   rW   r   )cur_listr:   r^   r   r	   	derp_list   s    


z)process.<locals>.mdify.<locals>.derp_listc                 sl   t dkr,td ts, d  d S d} d}xD ]}|pJ|}| | q@W |rh |  d S )Nr   r   pF)lenri   rA   rJ   rL   )rs   Zgotsomer   )r   r:   r^   r   r	   derp_p   s    

z&process.<locals>.mdify.<locals>.derp_pTc                  sV   sdS t d tsdS d dr6d dS d drRd dS dS )NFr   z- rU   Tz* rV   )ri   rA   
startswithrL   r   )rq   r:   r^   r   r	   maybe_listaderp   s     

z/process.<locals>.mdify.<locals>.maybe_listaderpz- z* )r1   
IndexErrorrF   rJ   ri   rA   rv   )r   rr   ru   Zpythonsucksrw   )r:   rc   )r   rq   r^   r	   mdify   s*      
zprocess.<locals>.mdifybodyr1   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 )Nr1   r   rz   )r   rt   r1   r   rg   r    r   )Znextcur)r   ry   r   r	   mdifyAll   s,    

zprocess.<locals>.mdifyAll)findr   rt   r1   )r:   rT   r\   r{   r   )r   r:   rc   ry   r	   processI   s    14

r}   c       	      C   s   t | }t|d}|dp|}|rV|  t|j}|d| |d| t|}|d}|rt|j	}n|g}|d}x0|r|d }|  |j
d kst|| qW |  ||fS )NFtitleZintitlerz   contentr`   )r
   r;   r|   rh   rA   stringrJ   replace_withr}   r1   r    rF   rO   Z	decompose)	templater8   ZdefaultTitletmplmkr~   Zbodr   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d}|s| }t j|r:t|d
}| S Q R X t|d}|t W d Q R X tS )Nr   rtwt)	osenvironr;   pathexistsr6   r7   writedefaultTemplate)defaultr   r   outr   r   r	   getTemplate!  s    r   __main__r   pretty)F)N)r   ),bs4r   Zbs4.elementr   r   r   r   
subprocessr   r   sysr>   r
   r?   rl   ZNLPATDOTALLrj   ZnlEndr   r   r"   ZthingsZouterjoinrf   
differenceinnerr   r4   r;   rC   r}   r   r   r   rQ   argvr:   r~   r   r,   ZprettifyrA   r   r   r   r	   <module>   s8   
	 *
 9


