-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathutils.go
44 lines (35 loc) · 1.62 KB
/
utils.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main
import (
"github.com/antlr/antlr4/runtime/Go/antlr/v4"
"go.lsp.dev/protocol"
)
func TokenToPosition(token antlr.Token) protocol.Position {
return protocol.Position{
Line: uint32(token.GetLine() - 1),
Character: uint32(token.GetColumn()),
}
}
func SymbolToRange(symbol antlr.Token) protocol.Range {
return protocol.Range{
Start: TokenToPosition(symbol),
End: protocol.Position{
Line: uint32(symbol.GetLine() - 1),
Character: uint32(symbol.GetColumn() + len(symbol.GetText())),
},
}
}
func PositionInRange(start, stop antlr.Token, position protocol.Position) bool {
//logger.Sugar().Debug(start.GetLine()-1, start.GetColumn()-1, "|", stop.GetLine()-1, stop.GetColumn()-1, "||", position)
return start.GetLine()-1 <= int(position.Line) && stop.GetLine()-1 >= int(position.Line) &&
start.GetColumn()-1 <= int(position.Character) && stop.GetColumn()-1 >= int(position.Character)
}
func PositionInText(start antlr.Token, text string, position protocol.Position) bool {
//logger.Sugar().Debug(start.GetLine()-1, start.GetColumn(), "|", start.GetColumn()-1 + len(text), "||", position)
return start.GetLine()-1 == int(position.Line) &&
start.GetColumn() <= int(position.Character) && start.GetColumn()-1+len(text) >= int(position.Character)
}
func PositionInOrAfterText(start antlr.Token, text string, position protocol.Position) bool {
//logger.Sugar().Debug(start.GetLine()-1, start.GetColumn(), "|", start.GetColumn() + len(text), "||", position)
return start.GetLine()-1 == int(position.Line) &&
start.GetColumn() <= int(position.Character) && start.GetColumn()+len(text) >= int(position.Character)
}