o
    ?lcz                     @   s   d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlZd dlZd dlZejg ddZd	d
 ZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZdS )    )models)	mark_safe)get_template)ContextTemplate)MarkdownxFieldN)zcode-friendlyzfenced-code-blocks	numberingtables)extrasc                 C   s,   t | }tjdd|tjtj d}t|S )Nz<pre>(.*?)</pre>z<pre class="latex">\1</pre>flags)
markdownerconvertresubMDOTALLr   )st r   %/home/saeta/www/mysrc/latex/models.pymd   s   

r   c                   @   sN   e Zd ZedejZejddZe	 Z
dd Zedd ZG dd	 d	Zd
S )OptionPackage   
max_lengthc                 C   s   d| j j d| j S )N[] )packagenamecodeselfr   r   r   __str__"   s   zOption.__str__c                 C   
   t | jS Nr   descriptionr"   r   r   r   md_description%      
zOption.md_descriptionc                   @   s   e Zd ZddgZdS )zOption.Metar   r!   N__name__
__module____qualname__orderingr   r   r   r   Meta)   s    r0   N)r,   r-   r.   r   
ForeignKeyCASCADEr   	CharFieldr!   r   r(   r$   propertyr)   r0   r   r   r   r   r      s    
r   c                   @   s.   e Zd ZejddZdd ZG dd dZdS )Categoryr   r   c                 C      | j S r&   r    r"   r   r   r   r$   0      zCategory.__str__c                   @   s   e Zd ZdZdgZdS )zCategory.Meta
categoriesr    N)r,   r-   r.   verbose_name_pluralr/   r   r   r   r   r0   3   s    r0   N)r,   r-   r.   r   r3   r    r$   r0   r   r   r   r   r5   -   s    r5   c                       sj   e Zd Ze ZejdddZejdddZ	ejddZ
dd Z fdd	Zed
d Zedd Z  ZS )
ExampleOldLaTeX code needed to compileT	help_textblanknullr?   r?   c                 C   s0   | j rdt| j  dnd}|| jdd  S )Nr   r    
r   )imagelentextsplitr#   imgr   r   r   r$   @   s   zExampleOld.__str__c                    s   ddl m} g }tjd| jddtjtjB dD ]
}||	d qd
|}||| jd}|jr8|j| _n|j| _t j|i | d S )	Nr   Texerz```\n(.*)\n```
rD   r      r!   defs)mysrc.texerrL   r   finditerrG   replacer   r   appendgroupjoinpreamblepngrE   errorsupersave)r#   argskwargsrL   groupsmrG   r   	__class__r   r   r[   D   s   


zExampleOld.savec                 C   r%   r&   r   rG   r"   r   r   r   md_textT   r*   zExampleOld.md_textc                 C   4   zt | j}d|  d}t|W S    Y dS )Nz <img src="data:image/png;base64,">rC   base64encodebytesrE   decoder   r#   bitsr   r   r   r   rJ   X      
zExampleOld.img)r,   r-   r.   r   rG   r   	TextFieldrW   BinaryFieldrE   rY   r$   r[   r4   rc   rJ   __classcell__r   r   r`   r   r;   :   s    
r;   c                   @   s   e Zd ZejddZeeZe	 Z
e	dddZejdddZejddZdd	 Zd
d Zedd Zedd Zedd ZG dd dZdS )r   @   r   Tr@   P   )r   r?   rB   c                 C   s,   dd | j  D }dd| d| j S )Nc                 S   s   g | ]}t |jqS r   )strr    .0xr   r   r   
<listcomp>m   s    z#Package.__str__.<locals>.<listcomp>r   z, r   )categoryiteratorrV   r    )r#   catsr   r   r   r$   l   s   zPackage.__str__c                 C   sB   | j  }t|rtjj|d}| j| d| _ |   dS dS )z.Temporary function to convert temp to examples)rG   rC   N)	tempstriprF   Exampleobjectscreateexamplesaddr[   )r#   r   er   r   r   r   p   s   
zPackage.convertc                 C   r%   r&   r'   r"   r   r   r   r)   y   r*   zPackage.md_descriptionc                 C   s   | j  }|S r&   )example_setall)r#   exr   r   r   md_examples}   s   
zPackage.md_examplesc                    s   d ddgg}dd | j  D }t|dkr,|d d  d| j 7  < | j|d d< n'|d d  d	7  < |D ]
}d
|d  |d< q8|| |d| j | jg  fdd|D }d|S )N$   z\usepackagerC   c                 S   s"   g | ]}|j |jd d gqS )rD   r   )r!   r(   rH   )rt   optionr   r   r   rv      s    z Package.code.<locals>.<listcomp>r   z{%s}rN   r   z    z]{%s}c                    s:   g | ]}|d  r|d d  d|d   n|d qS )rN   r   <z% r   rs   comment_colr   r   rv      s   : rD   )
option_setr   rF   r    commentextendrT   rV   )r#   linesoptsofinishedr   r   r   r!      s    

zPackage.codec                   @      e Zd ZdgZdS )zPackage.Metar    Nr+   r   r   r   r   r0      s    r0   N)r,   r-   r.   r   r3   r    ManyToManyFieldr5   rw   r   r(   rz   r   rm   initializationr$   r   r4   r)   r   r!   r0   r   r   r   r   r   c   s     
	


r   c                       s   e Zd Ze ZejdddZejdddZ	ejddZ
ejeejdZdd Z fd	d
Zedd Zedd ZG dd dZ  ZS )r|   r<   Tr=   r@   rB   )	on_deletec                 C   s>   | j rdt| j  dnd}d| jj d| | jd d  S )N(z) rC   r   r   d   )rE   rF   r   r    rG   rI   r   r   r   r$      s   "zExample.__str__c           	         s   ddl m} | jdrd | _nKg }| jdd}tjd|tj	tj
B dD ]}|d}|dr9||d	 q%d|}||| jd
}|jrQ|j| _d| _n
d | _d|j| _t j|i | d S )Nr   rK   	NOCOMPILErM   rD   z^```([^`]*)^`{3}r   z```
rN   rO   rC   )rQ   rL   rW   
startswithrE   rG   rS   r   rR   r   r   rU   rT   rV   rX   rY   rZ   r[   )	r#   r\   r]   rL   r^   txtr_   r   rG   r`   r   r   r[      s(   



zExample.savec                 C   r%   r&   rb   r"   r   r   r   rc      r*   zExample.md_textc                 C   rd   )Nz0<img class="example" src="data:image/png;base64,re   rC   rf   rj   r   r   r   rJ      rl   zExample.imgc                   @   r   )zExample.Metapackage__nameNr+   r   r   r   r   r0      s    
r0   )r,   r-   r.   r   rG   r   rm   rW   rn   rE   rY   r1   r   r2   r   r$   r[   r4   rc   rJ   r0   ro   r   r   r`   r   r|      s    

r|   c                   @   s4   e Zd ZejddZeeZe	 Z
edd ZdS )Facetrp   r   c                 C   r%   r&   r'   r"   r   r   r   r)      r*   zFacet.md_descriptionN)r,   r-   r.   r   r3   r    r   r   packagesr   r(   r4   r)   r   r   r   r   r      s    
r   c                   @   sB   e Zd ZejddZe Ze Z	e Z
dd Zedd ZdS )r       r   c                 C   r6   r&   r7   r"   r   r   r   r$      r8   zTemplate.__str__c                 C   r%   r&   r'   r"   r   r   r   r)      r*   zTemplate.md_descriptionN)r,   r-   r.   r   r3   r    r   r(   rm   r   templater$   r4   r)   r   r   r   r   r      s    r   )	django.dbr   django.utils.safestringr   django.template.loaderr   django.templater   r   markdownx.modelsr   	markdown2r   rg   Markdownr   r   Modelr   r5   r;   r   r|   r   r   r   r   r   <module>   s&    );4
