MCPcopy
hub / github.com/google/go-cmp / connect

Method connect

cmp/internal/diff/diff.go:333–375  ·  view source on GitHub ↗

connect appends any necessary Identity, Modified, UniqueX, or UniqueY types to the edit-script to connect p.point to dst.

(dst point, f EqualFunc)

Source from the content-addressed store, hash-verified

331// connect appends any necessary Identity, Modified, UniqueX, or UniqueY types
332// to the edit-script to connect p.point to dst.
333func (p *path) connect(dst point, f EqualFunc) {
334 if p.dir > 0 {
335 // Connect in forward direction.
336 for dst.X > p.X && dst.Y > p.Y {
337 switch r := f(p.X, p.Y); {
338 case r.Equal():
339 p.append(Identity)
340 case r.Similar():
341 p.append(Modified)
342 case dst.X-p.X >= dst.Y-p.Y:
343 p.append(UniqueX)
344 default:
345 p.append(UniqueY)
346 }
347 }
348 for dst.X > p.X {
349 p.append(UniqueX)
350 }
351 for dst.Y > p.Y {
352 p.append(UniqueY)
353 }
354 } else {
355 // Connect in reverse direction.
356 for p.X > dst.X && p.Y > dst.Y {
357 switch r := f(p.X-1, p.Y-1); {
358 case r.Equal():
359 p.append(Identity)
360 case r.Similar():
361 p.append(Modified)
362 case p.Y-dst.Y >= p.X-dst.X:
363 p.append(UniqueY)
364 default:
365 p.append(UniqueX)
366 }
367 }
368 for p.X > dst.X {
369 p.append(UniqueX)
370 }
371 for p.Y > dst.Y {
372 p.append(UniqueY)
373 }
374 }
375}
376
377func (p *path) append(t EditType) {
378 p.es = append(p.es, t)

Callers 1

DifferenceFunction · 0.95

Calls 3

appendMethod · 0.95
SimilarMethod · 0.80
EqualMethod · 0.65

Tested by

no test coverage detected