관리-도구
편집 파일: diff.cpython-37.opt-1.pyc
B �|/\Yw � @ s� d dl mZ d dlZd dlmZ d dlmZ d dlZddgZyd dl m Z W n ek rl d dl m Z Y nX yeZW n ek r� eZY nX ye W n ek r� eZY nX dd � Zefd d�Zdd� Zd d� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdidd�Zdd� ZG dd � d �ZG d!d"� d"�Z G d#d$� d$e!�Z"d%d&� Z#d'd(� Z$d)d*� Z%d+d,� Z&d-d.� Z'd/d0� Z(G d1d2� d2e�Z)G d3d4� d4e)�Z*G d5d6� d6e)�Z+djd8d9�Z,dkd:d;�Z-e�.d<ej/ej0B �Z1e�.d=ej/ej0B �Z2e�.d>ej/ej0B �Z3d?d@� Z4e�.dA�Z5dBdC� Z6dDdE� Z7dFZ8dGZ9dHZ:dldIdJ�Z;e�.dKej<�Z=dLdM� Z>e�.dN�Z?dOdP� Z@dQdR� ZAdSdT� ZBdUdV� ZCdWdX� ZDdYdZ� ZEdmd[d\�ZFd]d^� ZGd_d`� ZHdadb� ZIdcdd� ZJG dedf� dfejK�ZLeMdgk�r�d dhlmNZN eN�O� dS )n� )�absolute_importN)�etree)�fragment_fromstring� html_annotate�htmldiff)�escapec C s dt t|�d�| f S )Nz<span title="%s">%s</span>� )�html_escape�_unicode)�text�version� r �A/opt/alt/python37/lib64/python3.7/site-packages/lxml/html/diff.py�default_markup s r c C sZ dd� | D �}|d }x"|dd� D ]}t ||� |}q$W t|�}t||�}d�|��� S )a doclist should be ordered from oldest to newest, like:: >>> version1 = 'Hello World' >>> version2 = 'Goodbye World' >>> print(html_annotate([(version1, 'version 1'), ... (version2, 'version 2')])) <span title="version 2">Goodbye</span> <span title="version 1">World</span> The documents must be *fragments* (str/UTF8 or unicode), not complete documents The markup argument is a function to markup the spans of words. This function is called like markup('Hello', 'version 2'), and returns HTML. The first argument is text and never includes any markup. The default uses a span with a title: >>> print(default_markup('Some Text', 'by Joe')) <span title="by Joe">Some Text</span> c S s g | ]\}}t ||��qS r )�tokenize_annotated)�.0�docr r r r � <listcomp>= s z!html_annotate.<locals>.<listcomp>r r N� )�html_annotate_merge_annotations�compress_tokens�markup_serialize_tokens�join�strip)ZdoclistZmarkupZ tokenlistZ cur_tokens�tokens�resultr r r r # s c C s$ t | dd�}x|D ] }||_qW |S )zFTokenize a document and add an annotation attribute to each token F)� include_hrefs)�tokenize� annotation)r r r �tokr r r r K s r c C sZ t | |d�}|�� }x@|D ]8\}}}}}|dkr| ||� } |||� } t| | � qW dS )z�Merge the annotations from tokens_old into tokens_new, when the tokens in the new document already existed in the old document. )�a�b�equalN)�InsensitiveSequenceMatcher�get_opcodes�copy_annotations)Z tokens_oldZ tokens_new�s�commands�command�i1�i2�j1�j2Zeq_oldZeq_newr r r r S s r c C s8 t | �t |�kst�xt| |�D ]\}}|j|_q W dS )zN Copy annotations from the tokens listed in src to the tokens in dest N)�len�AssertionError�zipr )�src�destZsrc_tokZdest_tokr r r r% ` s r% c C sZ | d g}xJ| dd� D ]:}|d j sH|jsH|d j|jkrHt||� q|�|� qW |S )zm Combine adjacent tokens when there is no HTML between the tokens, and they share an annotation r r N���)� post_tags�pre_tagsr �compress_merge_back�append)r r r r r r r h s r c C sv | d }t |�tk s t |�tk r,| �|� nFt|�}|jrD||j7 }||7 }t||j|j|jd�}|j|_|| d<