B
    a©EfÔ  ã               @   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}	x| ¡ D ]\}
}}}}|}|
dkrì|d|||…  d 7 }n^|
dkr|d| ||…  d 7 }n:|
dkrJ|d| ||…  d 7 }|d|||…  d 7 }d|ks^d|krn| |¡ d
}q¶d|kr¶|j	dd}|d }| |¡ |t
|ƒd  }|d }|dkr¶| d¡ q¶q¶W 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_arrZresr   r   r   Úhtmldiff   sH    $$






r   N)r   )r   r   r   r   r   Ú<module>   r	   