U
    m(6eÔ  ã                   @   s   ddd„Z dS )é   c                 C   sâ  dd l }dd l}| d d…  dd¡ dd¡ dd¡} |d d…  dd¡ dd¡ dd¡}|j d|  ¡ ¡ } |j d| ¡ ¡ }| dd	„ | d |d ¡}g }d
}d
}d}	| ¡ D ]\}
}}}}|}|
dkrè|d|||…  d 7 }n^|
dkr|d| ||…  d 7 }n:|
dkrF|d| ||…  d 7 }|d|||…  d 7 }d|ksZd|krj| |¡ d
}q²d|kr²|j	dd}|d }| |¡ |t
|ƒd  }|d }|dkr²| d¡ q²q²d
 |¡}| d¡}| dd¡}|S )Né    i † z<br>Ú
z<br/>z<br />z<html>c                 S   s   | dkS )Nú © )Úxr   r   ú./cmf/util/htmldiff.pyÚ<lambda>	   ó    zhtmldiff.<locals>.<lambda>Ú TÚinsertz<ins>z</ins>Údeletez<del>z</del>Úreplace)Úkeependsé   z...z
 z<br>
)ÚdifflibZ	lxml.htmlr   ZhtmlZ
fromstringZtext_contentZSequenceMatcherZget_opcodesÚappendÚ
splitlinesÚlenÚjoinÚstrip)ÚaÚbÚlimitr   ZlxmlZseqmÚoutputZchangeZprev_changeZ	clear_strZopcodeZa0Za1Zb0Zb1Z
change_arrÚresr   r   r   Úhtmldiff   sH    $$






r   N)r   )r   r   r   r   r   Ú<module>   r	   