MCPcopy
hub / github.com/dgraph-io/dgraph / getFragment

Function getFragment

dql/parser.go:1077–1112  ·  view source on GitHub ↗

getFragment parses a fragment definition (not reference).

(it *lex.ItemIterator)

Source from the content-addressed store, hash-verified

1075
1076// getFragment parses a fragment definition (not reference).
1077func getFragment(it *lex.ItemIterator) (*fragmentNode, error) {
1078 var name string
1079loop:
1080 for it.Next() {
1081 item := it.Item()
1082 switch item.Typ {
1083 case itemName:
1084 v := strings.TrimSpace(item.Val)
1085 if len(v) > 0 && name == "" {
1086 // Currently, we take the first nontrivial token as the
1087 // fragment name and ignore everything after that until we see
1088 // a left curl.
1089 name = v
1090 }
1091 case itemLeftCurl:
1092 break loop
1093 default:
1094 return nil, item.Errorf("Unexpected item in fragment: %v %v", item.Typ, item.Val)
1095 }
1096 }
1097 if name == "" {
1098 return nil, it.Errorf("Empty fragment name")
1099 }
1100
1101 gq := &GraphQuery{
1102 Args: make(map[string]string),
1103 }
1104 if err := godeep(it, gq); err != nil {
1105 return nil, err
1106 }
1107 fn := &fragmentNode{
1108 Name: name,
1109 Gq: gq,
1110 }
1111 return fn, nil
1112}
1113
1114// parses till rightSquare is found (parses [a, b]) excluding leftSquare
1115// This function can be reused for query later

Callers 1

ParseWithNeedVarsFunction · 0.85

Calls 4

godeepFunction · 0.85
ItemMethod · 0.80
NextMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected