mirror of
https://github.com/Myzel394/config-lsp.git
synced 2025-06-18 23:15:26 +02:00
fix(server): Improve quotes
This commit is contained in:
parent
4a3ab6e040
commit
ea667653cd
@ -27,15 +27,18 @@ func checkIsUsingDoubleQuotes(
|
||||
valueRange common.LocationRange,
|
||||
) {
|
||||
quoteRanges := utils.GetQuoteRanges(value.Raw)
|
||||
singleQuotePosition := strings.Index(value.Raw, "'")
|
||||
invertedRanges := quoteRanges.GetInvertedRanges(len(value.Raw))
|
||||
|
||||
// Single quote
|
||||
if singleQuotePosition != -1 && !quoteRanges.IsIndexInsideQuotes(singleQuotePosition) {
|
||||
ctx.diagnostics = append(ctx.diagnostics, protocol.Diagnostic{
|
||||
Range: valueRange.ToLSPRange(),
|
||||
Message: "ssh_config does not support single quotes. Use double quotes (\") instead.",
|
||||
Severity: &common.SeverityError,
|
||||
})
|
||||
for _, rang := range invertedRanges {
|
||||
text := value.Raw[rang[0]:rang[1]]
|
||||
|
||||
if strings.Contains(text, "'") {
|
||||
ctx.diagnostics = append(ctx.diagnostics, protocol.Diagnostic{
|
||||
Range: valueRange.ToLSPRange(),
|
||||
Message: "ssh_config does not support single quotes. Use double quotes (\") instead.",
|
||||
Severity: &common.SeverityError,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,8 @@ func TestValidDependentOptionsExample(
|
||||
d := testutils_test.DocumentFromInput(t, `
|
||||
Port 1234
|
||||
CanonicalizeHostname yes
|
||||
CanonicalDomains example.com
|
||||
CanonicalDomains "example.com"
|
||||
Test "hello world 'test' "
|
||||
`)
|
||||
ctx := &analyzerContext{
|
||||
document: d,
|
||||
|
@ -3,7 +3,6 @@ package analyzer
|
||||
import (
|
||||
"config-lsp/common"
|
||||
commonparser "config-lsp/common/parser"
|
||||
"config-lsp/utils"
|
||||
"strings"
|
||||
|
||||
protocol "github.com/tliron/glsp/protocol_3_16"
|
||||
@ -26,14 +25,10 @@ func checkIsUsingDoubleQuotes(
|
||||
value commonparser.ParsedString,
|
||||
valueRange common.LocationRange,
|
||||
) {
|
||||
quoteRanges := utils.GetQuoteRanges(value.Raw)
|
||||
singleQuotePosition := strings.Index(value.Raw, "'")
|
||||
|
||||
// Single quote
|
||||
if singleQuotePosition != -1 && !quoteRanges.IsIndexInsideQuotes(singleQuotePosition) {
|
||||
if strings.HasPrefix(value.Raw, "'") && strings.HasSuffix(value.Raw, "'") {
|
||||
ctx.diagnostics = append(ctx.diagnostics, protocol.Diagnostic{
|
||||
Range: valueRange.ToLSPRange(),
|
||||
Message: "sshd_config does not support single quotes. Use double quotes (\") instead.",
|
||||
Message: "ssh_config does not support single quotes. Use double quotes (\") instead.",
|
||||
Severity: &common.SeverityError,
|
||||
})
|
||||
}
|
||||
|
@ -55,20 +55,18 @@ func (q quoteRanges) GetInvertedRanges(textLength int) [][2]int {
|
||||
inverted = append(inverted, [2]int{0, firstRange[0]})
|
||||
}
|
||||
|
||||
if len(q) == 1 {
|
||||
return inverted
|
||||
}
|
||||
if len(q) > 1 {
|
||||
for index, currentRange := range q[:len(q)-1] {
|
||||
nextRange := q[index+1]
|
||||
|
||||
for index, currentRange := range q[:len(q)-1] {
|
||||
nextRange := q[index+1]
|
||||
|
||||
inverted = append(inverted, [2]int{currentRange[1] + 1, nextRange[0]})
|
||||
inverted = append(inverted, [2]int{currentRange[1] + 1, nextRange[0]})
|
||||
}
|
||||
}
|
||||
|
||||
lastRange := q[len(q)-1]
|
||||
|
||||
if lastRange[1] != (textLength - 1) {
|
||||
inverted = append(inverted, [2]int{lastRange[1], textLength - 1})
|
||||
inverted = append(inverted, [2]int{lastRange[1] + 1, textLength})
|
||||
}
|
||||
|
||||
return inverted
|
||||
|
@ -81,3 +81,15 @@ func TestInvertedQuotesFullyQuoted(
|
||||
t.Fatalf("Unexpected inverted quote ranges: %v", inverted)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInvertedQuotesFirstThenRemaining(
|
||||
t *testing.T,
|
||||
) {
|
||||
text := `"hello world" i am here`
|
||||
quoteRanges := GetQuoteRanges(text)
|
||||
inverted := quoteRanges.GetInvertedRanges(len(text))
|
||||
|
||||
if !(len(inverted) == 1 && inverted[0][0] == 13 && inverted[0][1] == 23) {
|
||||
t.Fatalf("Unexpected inverted quote ranges: %v", inverted)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user