lxml.html.diff.InsensitiveSequenceMatcher
Package lxml :: Package html :: Module diff :: Class InsensitiveSequenceMatcher
[hide private]
[frames] | no frames]

Class InsensitiveSequenceMatcher

source code

difflib.SequenceMatcher --+
                          |
                         InsensitiveSequenceMatcher

Acts like SequenceMatcher, but tries not to find very small equal blocks amidst large spans of changes
Instance Methods [hide private]
 
get_matching_blocks(self)
Return list of triples describing matching subsequences.
source code

Inherited from difflib.SequenceMatcher: __init__, find_longest_match, get_grouped_opcodes, get_opcodes, quick_ratio, ratio, real_quick_ratio, set_seq1, set_seq2, set_seqs

Class Variables [hide private]
  threshold = 2
  __qualname__ = 'InsensitiveSequenceMatcher'
Method Details [hide private]

get_matching_blocks(self)

source code 

Return list of triples describing matching subsequences.

Each triple is of the form (i, j, n), and means that a[i:i+n] == b[j:j+n]. The triples are monotonically increasing in i and in j. New in Python 2.5, it's also guaranteed that if (i, j, n) and (i', j', n') are adjacent triples in the list, and the second is not the last triple in the list, then i+n != i' or j+n != j'. IOW, adjacent triples never describe adjacent equal blocks.

The last triple is a dummy, (len(a), len(b), 0), and is the only triple with n==0.

>>> s = SequenceMatcher(None, "abxcd", "abcd")
>>> s.get_matching_blocks()
[Match(a=0, b=0, size=2), Match(a=3, b=2, size=2), Match(a=5, b=4, size=0)]
Overrides: difflib.SequenceMatcher.get_matching_blocks
(inherited documentation)