mirror of
https://github.com/schollz/cowyo.git
synced 2023-08-10 21:13:00 +03:00
30 lines
645 B
Go
30 lines
645 B
Go
|
package reflectsource
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
)
|
||
|
|
||
|
// getLineStartEndIndicies gets the starting and ending caret indicies of line with specified lineIndex.
|
||
|
// Does not include newline character.
|
||
|
// First line has index 0.
|
||
|
// Returns (-1, -1) if line is not found.
|
||
|
func getLineStartEndIndicies(b []byte, lineIndex int) (startIndex, endIndex int) {
|
||
|
index := 0
|
||
|
for line := 0; ; line++ {
|
||
|
lineLength := bytes.IndexByte(b[index:], '\n')
|
||
|
if line == lineIndex {
|
||
|
if lineLength == -1 {
|
||
|
return index, len(b)
|
||
|
} else {
|
||
|
return index, index + lineLength
|
||
|
}
|
||
|
}
|
||
|
if lineLength == -1 {
|
||
|
break
|
||
|
}
|
||
|
index += lineLength + 1
|
||
|
}
|
||
|
|
||
|
return -1, -1
|
||
|
}
|