~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/_patiencediff_py.py

  • Committer: Naoki INADA
  • Date: 2009-10-29 10:01:19 UTC
  • mto: (4634.97.3 2.0)
  • mto: This revision was merged to the branch mainline in revision 4798.
  • Revision ID: inada-n@klab.jp-20091029100119-uckv9t7ej2qrghw3
import doc-ja rev90

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
#
14
14
# You should have received a copy of the GNU General Public License
15
15
# along with this program; if not, write to the Free Software
16
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
18
 
19
19
from bisect import bisect
49
49
        else:
50
50
            index[line]= i
51
51
    # make btoa[i] = position of line i in a, unless
52
 
    # that line doesn't occur exactly once in both, 
 
52
    # that line doesn't occur exactly once in both,
53
53
    # in which case it's set to None
54
54
    btoa = [None] * len(b)
55
55
    index2 = {}
79
79
            k = len(stacks)
80
80
        # as an optimization, check if the next line comes right after
81
81
        # the previous line, because usually it does
82
 
        elif stacks and stacks[k] < apos and (k == len(stacks) - 1 or 
 
82
        elif stacks and stacks[k] < apos and (k == len(stacks) - 1 or
83
83
                                              stacks[k+1] > apos):
84
84
            k += 1
85
85
        else:
176
176
    length = 0
177
177
    for i_a, i_b in matches:
178
178
        if (start_a is not None
179
 
            and (i_a == start_a + length) 
 
179
            and (i_a == start_a + length)
180
180
            and (i_b == start_b + length)):
181
181
            length += 1
182
182
        else:
196
196
    # For consistency sake, make sure all matches are only increasing
197
197
    next_a = -1
198
198
    next_b = -1
199
 
    for a,b,match_len in answer:
200
 
        assert a >= next_a, 'Non increasing matches for a'
201
 
        assert b >= next_b, 'Not increasing matches for b'
 
199
    for (a, b, match_len) in answer:
 
200
        if a < next_a:
 
201
            raise ValueError('Non increasing matches for a')
 
202
        if b < next_b:
 
203
            raise ValueError('Non increasing matches for b')
202
204
        next_a = a + match_len
203
205
        next_b = b + match_len
204
206
 
228
230
        >>> s.get_matching_blocks()
229
231
        [(0, 0, 2), (3, 2, 2), (5, 4, 0)]
230
232
        """
231
 
        # jam 20060525 This is the python 2.4.1 difflib get_matching_blocks 
 
233
        # jam 20060525 This is the python 2.4.1 difflib get_matching_blocks
232
234
        # implementation which uses __helper. 2.4.3 got rid of helper for
233
235
        # doing it inline with a queue.
234
236
        # We should consider doing the same for recurse_matches