tree ff47dfda21c1518a3caf10004d9a36e5f02c699c
parent 849d7ebc9716f43ec1295e9bc00e5c8cffef3d9f
author nrnrk <noriki6t@gmail.com> 1665850653 +0900
committer nrnrk <noriki6t@gmail.com> 1665850653 +0900
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEAG0QUPMJzkwAljFhO9Mu5jA7KA4FAmNK4JcACgkQO9Mu5jA7
 KA7+4A/+O8cH/dP4krwLElAT7ErVvaIBMlHlkn7om4M46GZKoP+Z1KWlcSpYRQQ0
 8WypZvt8IvvSBxsxZBelHsGyU99kc6lrYQM/dN2UxwnG56aq8QmXCV30341zcA/e
 aUJt8O5qe/ya2d4f/0kn21OwPqLpswL2KLmJUPoiPv819MW/69xhuua5aLj+bIDR
 1nh+az07iPX24FytkNfT6LHIDyxSRZtXG8x3YJWp0aD9N0s5fiXcIXB2CprENQmr
 3ThWjEF/w/Ix3SqqrL7/YjfTpAJ6QwGCialm22ppsAUGt/8GHexi+4vt9IStAiKQ
 6B1Lv3VCr0B1BPzSfjCa2sePOD7ZTAtEugcSaG7o45LijkeLpXxL7lXaDV7MsgWI
 qc2fo6DZJBExvslSwHZKJ/el9aSWTUVNbSLwCkGXgZG9WCNl85FTDoCh+vQB8wGm
 vKqCR9NFsvKSoG1KJzO9IJ7537gQ1KsSHQPHkEe9xVxMiDwGTWI+HUWjkx9OEWVq
 g/J0Wm+6EnUqmOgov8hacPFUJ0Mt1/OX2Gn9/pw8hlmgqSKKRNSe2QJE54ZX/P+h
 CwH8IPNpcQhmNyNEmZS2LCT3R2go7JPFPwrjXihwn5+dJhEVYtt80SK4IgNwMOcE
 g1thiVCPvI29bh9qNhL14f0+e1+B5f8LGoP7pNlH3Wtx+0n2WCY=
 =cQ1A
 -----END PGP SIGNATURE-----

fix: use common lineHash to share indice between text1 and text2

Use common cache of line contents between two texts in `DiffLinesToChars` to get line diffs correctly.
In some cases, line diffs cannot be retrieved correctly in the standard way (https://github.com/google/diff-match-patch/wiki/Line-or-Word-Diffs#line-mode).
In the below case, we failed to get line diffs correctly before this fix.

```go:main.go
package main

import (
	"fmt"

	"github.com/sergi/go-diff/diffmatchpatch"
)

const (
	text1 = `hoge:
  step11:
  - arrayitem1
  - arrayitem2
  step12:
    step21: hoge
    step22: -93
fuga: flatitem
`
	text2 = `hoge:
  step11:
  - arrayitem4
  - arrayitem2
  - arrayitem3
  step12:
    step21: hoge
    step22: -92
fuga: flatitem
`
)

func main() {
	dmp := diffmatchpatch.New()
	a, b, c := dmp.DiffLinesToChars(text1, text2)
	diffs := dmp.DiffMain(a, b, false)
	diffs = dmp.DiffCharsToLines(diffs, c)
	// diffs = dmp.DiffCleanupSemantic(diffs)
	fmt.Println(diffs)
}
```

```text:output
[{Insert hoge:
  step11:
hoge:
} {Equal hoge:
} {Insert hoge:
} {Equal   step11:
} {Insert hoge:
} {Equal   - arrayitem1
} {Insert hoge:
} {Equal   - arrayitem2
} {Insert hoge:
} {Equal   step12:
} {Insert hoge:
} {Equal     step21: hoge
} {Insert hoge:
} {Equal     step22: -93
} {Delete fuga: flatitem
}]
```

Note: This fix corresponds to a javascript implementation.
(ref: https://github.com/google/diff-match-patch/blob/62f2e689f498f9c92dbc588c58750addec9b1654/javascript/diff_match_patch_uncompressed.js#L466)
