cubefs

Форк
0
35 строк · 696.0 Байт
1
package location
2

3
import (
4
	"regexp"
5

6
	"github.com/graphql-go/graphql/language/source"
7
)
8

9
type SourceLocation struct {
10
	Line   int `json:"line"`
11
	Column int `json:"column"`
12
}
13

14
func GetLocation(s *source.Source, position int) SourceLocation {
15
	body := []byte{}
16
	if s != nil {
17
		body = s.Body
18
	}
19
	line := 1
20
	column := position + 1
21
	lineRegexp := regexp.MustCompile("\r\n|[\n\r]")
22
	matches := lineRegexp.FindAllIndex(body, -1)
23
	for _, match := range matches {
24
		matchIndex := match[0]
25
		if matchIndex < position {
26
			line++
27
			l := len(s.Body[match[0]:match[1]])
28
			column = position + 1 - (matchIndex + l)
29
			continue
30
		} else {
31
			break
32
		}
33
	}
34
	return SourceLocation{Line: line, Column: column}
35
}
36

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.