]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/hashicorp/hcl/json/token/position.go
Initial transfer of provider code
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / hcl / json / token / position.go
1 package token
2
3 import "fmt"
4
5 // Pos describes an arbitrary source position
6 // including the file, line, and column location.
7 // A Position is valid if the line number is > 0.
8 type Pos struct {
9 Filename string // filename, if any
10 Offset int // offset, starting at 0
11 Line int // line number, starting at 1
12 Column int // column number, starting at 1 (character count)
13 }
14
15 // IsValid returns true if the position is valid.
16 func (p *Pos) IsValid() bool { return p.Line > 0 }
17
18 // String returns a string in one of several forms:
19 //
20 // file:line:column valid position with file name
21 // line:column valid position without file name
22 // file invalid position with file name
23 // - invalid position without file name
24 func (p Pos) String() string {
25 s := p.Filename
26 if p.IsValid() {
27 if s != "" {
28 s += ":"
29 }
30 s += fmt.Sprintf("%d:%d", p.Line, p.Column)
31 }
32 if s == "" {
33 s = "-"
34 }
35 return s
36 }
37
38 // Before reports whether the position p is before u.
39 func (p Pos) Before(u Pos) bool {
40 return u.Offset > p.Offset || u.Line > p.Line
41 }
42
43 // After reports whether the position p is after u.
44 func (p Pos) After(u Pos) bool {
45 return u.Offset < p.Offset || u.Line < p.Line
46 }