MCPcopy Index your code
hub / github.com/zeromicro/go-zero / parseImportedAPI

Method parseImportedAPI

tools/goctl/pkg/parser/api/parser/api.go:262–320  ·  view source on GitHub ↗
(imports []ast.ImportStmt)

Source from the content-addressed store, hash-verified

260}
261
262func (api *API) parseImportedAPI(imports []ast.ImportStmt) ([]*API, error) {
263 var list []*API
264 if len(imports) == 0 {
265 return list, nil
266 }
267
268 var importValueSet = map[string]token.Token{}
269 for _, imp := range imports {
270 switch val := imp.(type) {
271 case *ast.ImportLiteralStmt:
272 importValueSet[strings.ReplaceAll(val.Value.Token.Text, `"`, "")] = val.Value.Token
273 case *ast.ImportGroupStmt:
274 for _, v := range val.Values {
275 importValueSet[strings.ReplaceAll(v.Token.Text, `"`, "")] = v.Token
276 }
277 }
278 }
279
280 dir := filepath.Dir(api.Filename)
281 for impPath, tok := range importValueSet {
282 if !filepath.IsAbs(impPath) {
283 impPath = filepath.Join(dir, impPath)
284 }
285 // import cycle check
286 if err := api.importManager.Push(impPath); err != nil {
287 return nil, ast.SyntaxError(tok.Position, "%s", err.Error())
288 }
289
290 if _, ok := api.importSet[impPath]; ok {
291 api.importManager.Pop()
292 continue
293 }
294 api.importSet[impPath] = lang.Placeholder
295
296 p := New(impPath, "")
297 ast := p.Parse()
298 if err := p.CheckErrors(); err != nil {
299 return nil, err
300 }
301
302 nestedApi, err := convert2API(ast, api.importSet, api.importManager)
303 if err != nil {
304 return nil, err
305 }
306
307 if err = nestedApi.parseReverse(); err != nil {
308 return nil, err
309 }
310
311 api.importManager.Pop()
312 list = append(list, nestedApi)
313
314 if err != nil {
315 return nil, err
316 }
317 }
318
319 return list, nil

Callers 1

parseReverseMethod · 0.95

Calls 11

SyntaxErrorFunction · 0.92
convert2APIFunction · 0.85
ReplaceAllMethod · 0.80
JoinMethod · 0.80
CheckErrorsMethod · 0.80
parseReverseMethod · 0.80
NewFunction · 0.70
PushMethod · 0.65
ErrorMethod · 0.65
PopMethod · 0.45
ParseMethod · 0.45

Tested by

no test coverage detected