| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package detect
- // Location represents a location in a file
- type Location struct {
- startLine int
- endLine int
- startColumn int
- endColumn int
- startLineIndex int
- endLineIndex int
- }
- func getLocation(linePairs [][]int, start int, end int) Location {
- var (
- prevNewLine int
- location Location
- lineSet bool
- _lineNum int
- )
- for lineNum, pair := range linePairs {
- _lineNum = lineNum
- newLineByteIndex := pair[0]
- if prevNewLine <= start && start < newLineByteIndex {
- lineSet = true
- location.startLine = lineNum
- location.endLine = lineNum
- location.startColumn = (start - prevNewLine) + 1 // +1 because counting starts at 1
- location.startLineIndex = prevNewLine
- location.endLineIndex = newLineByteIndex
- }
- if prevNewLine < end && end <= newLineByteIndex {
- location.endLine = lineNum
- location.endColumn = (end - prevNewLine)
- location.endLineIndex = newLineByteIndex
- }
- prevNewLine = pair[0]
- }
- if !lineSet {
- // if lines never get set then that means the secret is most likely
- // on the last line of the diff output and the diff output does not have
- // a newline
- location.startColumn = (start - prevNewLine) + 1 // +1 because counting starts at 1
- location.endColumn = (end - prevNewLine)
- location.startLine = _lineNum + 1
- location.endLine = _lineNum + 1
- }
- return location
- }
|