mirror of
https://github.com/Myzel394/config-lsp.git
synced 2025-06-18 23:15:26 +02:00
feat(fstab): Handle leading comments
This commit is contained in:
parent
9f927b8685
commit
948e3503de
@ -6,6 +6,7 @@ import (
|
||||
"config-lsp/handlers/fstab/ast/parser"
|
||||
"config-lsp/utils"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/antlr4-go/antlr/v4"
|
||||
"github.com/emirpasic/gods/maps/treemap"
|
||||
@ -27,13 +28,15 @@ func (c *FstabConfig) Clear() {
|
||||
|
||||
var commentPattern = regexp.MustCompile(`^\s*#`)
|
||||
var emptyPattern = regexp.MustCompile(`^\s*$`)
|
||||
var leadingCommentPattern = regexp.MustCompile(`^(.+?)#`)
|
||||
|
||||
func (c *FstabConfig) Parse(input string) []common.LSPError {
|
||||
errors := make([]common.LSPError, 0)
|
||||
lines := utils.SplitIntoLines(input)
|
||||
context := createListenerContext()
|
||||
|
||||
for rawLineNumber, line := range lines {
|
||||
for rawLineNumber, rawLine := range lines {
|
||||
line := rawLine
|
||||
lineNumber := uint32(rawLineNumber)
|
||||
context.line = lineNumber
|
||||
|
||||
@ -46,6 +49,11 @@ func (c *FstabConfig) Parse(input string) []common.LSPError {
|
||||
continue
|
||||
}
|
||||
|
||||
if strings.Contains(line, "#") {
|
||||
matches := leadingCommentPattern.FindStringSubmatch(line)
|
||||
line = matches[1]
|
||||
}
|
||||
|
||||
errors = append(
|
||||
errors,
|
||||
c.parseStatement(context, line)...,
|
||||
@ -55,7 +63,6 @@ func (c *FstabConfig) Parse(input string) []common.LSPError {
|
||||
return errors
|
||||
}
|
||||
|
||||
// TODO: Handle leading comments
|
||||
func (c *FstabConfig) parseStatement(
|
||||
context *fstabListenerContext,
|
||||
input string,
|
||||
|
@ -166,6 +166,24 @@ UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 defaults 0 2
|
||||
|
||||
}
|
||||
|
||||
func TestArchExample1WithComments(t *testing.T) {
|
||||
input := utils.Dedent(`
|
||||
# Hello there!
|
||||
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 / ext4 defaults 0 1
|
||||
# How are you?
|
||||
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none swap defaults 0 0 # And I am trailing!
|
||||
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 defaults 0 2 # I am tailing too!
|
||||
`)
|
||||
p := ast.NewFstabConfig()
|
||||
|
||||
errors := p.Parse(input)
|
||||
|
||||
if len(errors) > 0 {
|
||||
t.Fatalf("ParseFromContent failed with error %v", errors)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestArchExample2(t *testing.T) {
|
||||
input := utils.Dedent(`
|
||||
/dev/sda1 /boot vfat defaults 0 2
|
||||
|
Loading…
x
Reference in New Issue
Block a user