File: index.go

package info (click to toggle)
golang-github-sergi-go-diff 1.4.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,324 kB
  • sloc: makefile: 38; sh: 15
file content (32 lines) | stat: -rw-r--r-- 700 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package diffmatchpatch

type index uint32

const runeSkipStart = 0xd800
const runeSkipEnd = 0xdfff + 1
const runeMax = 0x110000 // next invalid code point

func stringToIndex(text string) []index {
	runes := []rune(text)
	indexes := make([]index, len(runes))
	for i, r := range runes {
		if r < runeSkipEnd {
			indexes[i] = index(r)
		} else {
			indexes[i] = index(r) - (runeSkipEnd - runeSkipStart)
		}
	}
	return indexes
}

func indexesToString(indexes []index) string {
	runes := make([]rune, len(indexes))
	for i, index := range indexes {
		if index < runeSkipStart {
			runes[i] = rune(index)
		} else {
			runes[i] = rune(index + (runeSkipEnd - runeSkipStart))
		}
	}
	return string(runes)
}