This repository has been archived on 2022-08-29. You can view files and clone it, but cannot push or open issues or pull requests.
arf/file/location.go
2022-08-18 02:04:49 -04:00

50 lines
1.2 KiB
Go

package file
import "fmt"
// Location represents a specific point in a file. It is used for error
// reporting.
type Location struct {
file *File
row int
column int
width int
}
// File returns the file the location is in
func (location Location) File () (file *File) {
return location.file
}
// Row returns the row the location is positioned at in the file, starting at
// zero.
func (location Location) Row () (row int) {
return location.row
}
// Column returns the column the location is positioned at in the file, starting
// at zero.
func (location Location) Column () (column int) {
return location.column
}
// Width returns the amount of runes spanned by the location, starting at row
// and column.
func (location Location) Width () (width int) {
return location.width
}
// SetWidth sets the location's width
func (location *Location) SetWidth (width int) {
location.width = width
}
// Describe generates a description of the location for debug purposes
func (location Location) Describe () (description string) {
return fmt.Sprint (
"in ", location.file.Path(),
" row ", location.row,
" column ", location.column,
" width ", location.width)
}