6c4344623b
The main HCL package is more visible this way, and so it's easier than having to pick it out from dozens of other package directories.
35 lines
887 B
Go
35 lines
887 B
Go
package hcled
|
|
|
|
import (
|
|
"github.com/hashicorp/hcl/v2"
|
|
)
|
|
|
|
type contextStringer interface {
|
|
ContextString(offset int) string
|
|
}
|
|
|
|
// ContextString returns a string describing the context of the given byte
|
|
// offset, if available. An empty string is returned if no such information
|
|
// is available, or otherwise the returned string is in a form that depends
|
|
// on the language used to write the referenced file.
|
|
func ContextString(file *hcl.File, offset int) string {
|
|
if cser, ok := file.Nav.(contextStringer); ok {
|
|
return cser.ContextString(offset)
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type contextDefRanger interface {
|
|
ContextDefRange(offset int) hcl.Range
|
|
}
|
|
|
|
func ContextDefRange(file *hcl.File, offset int) hcl.Range {
|
|
if cser, ok := file.Nav.(contextDefRanger); ok {
|
|
defRange := cser.ContextDefRange(offset)
|
|
if !defRange.Empty() {
|
|
return defRange
|
|
}
|
|
}
|
|
return file.Body.MissingItemRange()
|
|
}
|