internal/parser/content_utils.go (30 lines of code) (raw):

package parser import ( "context" "fmt" "strings" lsctx "github.com/Azure/azurerm-lsp/internal/context" "github.com/Azure/azurerm-lsp/internal/lsp" "github.com/Azure/azurerm-lsp/internal/protocol" ) func GetDocumentContent(ctx context.Context, documentURI protocol.DocumentURI) (string, string, error) { fs, err := lsctx.DocumentStorage(ctx) if err != nil { return "", "", err } doc, err := fs.GetDocument(lsp.FileHandlerFromDocumentURI(documentURI)) if err != nil { return "", "", fmt.Errorf("failed to get document: %v", err) } data, err := doc.Text() if err != nil { return "", "", fmt.Errorf("failed to get document text: %v", err) } return string(data), doc.Filename(), nil } func GetLineContent(contents []string, line uint32) (string, error) { if line < 0 || int(line) >= len(contents) { return "", fmt.Errorf("invalid line number") } return strings.TrimSpace(contents[line]), nil }