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) }