cubefs
35 строк · 696.0 Байт
1package location2
3import (4"regexp"5
6"github.com/graphql-go/graphql/language/source"7)
8
9type SourceLocation struct {10Line int `json:"line"`11Column int `json:"column"`12}
13
14func GetLocation(s *source.Source, position int) SourceLocation {15body := []byte{}16if s != nil {17body = s.Body18}19line := 120column := position + 121lineRegexp := regexp.MustCompile("\r\n|[\n\r]")22matches := lineRegexp.FindAllIndex(body, -1)23for _, match := range matches {24matchIndex := match[0]25if matchIndex < position {26line++27l := len(s.Body[match[0]:match[1]])28column = position + 1 - (matchIndex + l)29continue30} else {31break32}33}34return SourceLocation{Line: line, Column: column}35}
36