summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/hashicorp/hcl/json/token/position.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2018-08-16 19:20:59 +1000
committerJesse Duffield <jessedduffield@gmail.com>2018-08-16 19:20:59 +1000
commitdf7d1df4cbad9065c29fef08d3e8d143d8836b3f (patch)
tree86844bd39d2573f2abd60dbeb9f8b434e746022a /vendor/github.com/hashicorp/hcl/json/token/position.go
parent5819e04c537d729afc66fb61e529f546c06e094a (diff)
bump dependencies
Diffstat (limited to 'vendor/github.com/hashicorp/hcl/json/token/position.go')
-rw-r--r--vendor/github.com/hashicorp/hcl/json/token/position.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/hcl/json/token/position.go b/vendor/github.com/hashicorp/hcl/json/token/position.go
new file mode 100644
index 000000000..59c1bb72d
--- /dev/null
+++ b/vendor/github.com/hashicorp/hcl/json/token/position.go
@@ -0,0 +1,46 @@
+package token
+
+import "fmt"
+
+// Pos describes an arbitrary source position
+// including the file, line, and column location.
+// A Position is valid if the line number is > 0.
+type Pos struct {
+ Filename string // filename, if any
+ Offset int // offset, starting at 0
+ Line int // line number, starting at 1
+ Column int // column number, starting at 1 (character count)
+}
+
+// IsValid returns true if the position is valid.
+func (p *Pos) IsValid() bool { return p.Line > 0 }
+
+// String returns a string in one of several forms:
+//
+// file:line:column valid position with file name
+// line:column valid position without file name
+// file invalid position with file name
+// - invalid position without file name
+func (p Pos) String() string {
+ s := p.Filename
+ if p.IsValid() {
+ if s != "" {
+ s += ":"
+ }
+ s += fmt.Sprintf("%d:%d", p.Line, p.Column)
+ }
+ if s == "" {
+ s = "-"
+ }
+ return s
+}
+
+// Before reports whether the position p is before u.
+func (p Pos) Before(u Pos) bool {
+ return u.Offset > p.Offset || u.Line > p.Line
+}
+
+// After reports whether the position p is after u.
+func (p Pos) After(u Pos) bool {
+ return u.Offset < p.Offset || u.Line < p.Line
+}