Example #1
Owner
<pre>
<span style="color: rgb(100, 100, 100)"> 26: </span><span style="color: rgb(255, 255, 255)">func ExtractFunctions(sources_data *sources.SourcesData, names []string) ([]*Function, error) </span><span style="color: rgb(0, 166, 0)">{</span>
<span style="color: rgb(100, 100, 100)"> 27: </span><span style="color: rgb(0, 166, 0)"> fns := make([]*Function, 0, len(names))</span>
<span style="color: rgb(100, 100, 100)"> 28: </span><span style="color: rgb(0, 166, 0)"></span>
<span style="color: rgb(100, 100, 100)"> 29: </span><span style="color: rgb(0, 166, 0)"> filter := functionFilter(names)</span>
<span style="color: rgb(100, 100, 100)"> 30: </span><span style="color: rgb(0, 166, 0)"></span>
<span style="color: rgb(100, 100, 100)"> 31: </span><span style="color: rgb(0, 166, 0)"> for _, pkg := range sources_data.Packages </span><span style="color: rgb(0, 179, 0)">{</span>
<span style="color: rgb(100, 100, 100)"> 32: </span><span style="color: rgb(0, 179, 0)"> for _, syntax := range pkg.Syntax </span><span style="color: rgb(0, 179, 0)">{</span>
<span style="color: rgb(100, 100, 100)"> 33: </span><span style="color: rgb(0, 179, 0)"> for _, decl := range syntax.Decls </span><span style="color: rgb(0, 255, 0)">{</span>
<span style="color: rgb(100, 100, 100)"> 34: </span><span style="color: rgb(0, 255, 0)"> fn, ok := decl.(*ast.FuncDecl)</span>
<span style="color: rgb(100, 100, 100)"> 35: </span><span style="color: rgb(0, 255, 0)"> if !ok || !filter(fn) </span><span style="color: rgb(0, 236, 0)">{</span>
<span style="color: rgb(100, 100, 100)"> 36: </span><span style="color: rgb(0, 236, 0)"> continue</span><span style="color: rgb(255, 255, 255)"></span>
<span style="color: rgb(100, 100, 100)"> 37: </span><span style="color: rgb(255, 255, 255)"> }</span>
<span style="color: rgb(100, 100, 100)"> 38: </span><span style="color: rgb(255, 255, 255)"></span>
<span style="color: rgb(100, 100, 100)"> 39: </span><span style="color: rgb(255, 255, 255)"> </span><span style="color: rgb(0, 172, 0)">name := fn.Name.Name</span>
<span style="color: rgb(100, 100, 100)"> 40: </span><span style="color: rgb(0, 172, 0)"> file := pkg.Fset.File(fn.Pos())</span>
<span style="color: rgb(100, 100, 100)"> 41: </span><span style="color: rgb(0, 172, 0)"></span>
<span style="color: rgb(100, 100, 100)"> 42: </span><span style="color: rgb(0, 172, 0)"> pos := file.Position(fn.Pos())</span>
<span style="color: rgb(100, 100, 100)"> 43: </span><span style="color: rgb(0, 172, 0)"> end := file.Position(fn.End() + 1)</span>
<span style="color: rgb(100, 100, 100)"> 44: </span><span style="color: rgb(0, 172, 0)"></span>
<span style="color: rgb(100, 100, 100)"> 45: </span><span style="color: rgb(0, 172, 0)"> content, err := sources_data.Content(file, &pos, &end, name)</span>
<span style="color: rgb(100, 100, 100)"> 46: </span><span style="color: rgb(0, 172, 0)"> if err != nil </span><span style="color: rgb(255, 10, 10)">{</span>
<span style="color: rgb(100, 100, 100)"> 47: </span><span style="color: rgb(255, 10, 10)"> return fns, fmt.Errorf(</span>
<span style="color: rgb(100, 100, 100)"> 48: </span><span style="color: rgb(255, 10, 10)"> "could not get content of function '%s' in '%s': %w",</span>
<span style="color: rgb(100, 100, 100)"> 49: </span><span style="color: rgb(255, 10, 10)"> name, file.Name(), err,</span>
<span style="color: rgb(100, 100, 100)"> 50: </span><span style="color: rgb(255, 10, 10)"> )</span>
<span style="color: rgb(100, 100, 100)"> 51: </span><span style="color: rgb(255, 10, 10)"> }</span><span style="color: rgb(255, 255, 255)"></span>
<span style="color: rgb(100, 100, 100)"> 52: </span><span style="color: rgb(255, 255, 255)"></span>
<span style="color: rgb(100, 100, 100)"> 53: </span><span style="color: rgb(255, 255, 255)"> </span><span style="color: rgb(0, 172, 0)">fns = append(fns, &Function{</span>
<span style="color: rgb(100, 100, 100)"> 54: </span><span style="color: rgb(0, 172, 0)"> Name: name,</span>
<span style="color: rgb(100, 100, 100)"> 55: </span><span style="color: rgb(0, 172, 0)"> PkgPath: pkg.PkgPath,</span>
<span style="color: rgb(100, 100, 100)"> 56: </span><span style="color: rgb(0, 172, 0)"> FileName: file.Name(),</span>
<span style="color: rgb(100, 100, 100)"> 57: </span><span style="color: rgb(0, 172, 0)"> Lines: file.Lines(),</span>
<span style="color: rgb(100, 100, 100)"> 58: </span><span style="color: rgb(0, 172, 0)"> Content: content,</span>
<span style="color: rgb(100, 100, 100)"> 59: </span><span style="color: rgb(0, 172, 0)"> Pos: pos,</span>
<span style="color: rgb(100, 100, 100)"> 60: </span><span style="color: rgb(0, 172, 0)"> End: end,</span>
<span style="color: rgb(100, 100, 100)"> 61: </span><span style="color: rgb(0, 172, 0)"> })</span><span style="color: rgb(255, 255, 255)"></span>
<span style="color: rgb(100, 100, 100)"> 62: </span><span style="color: rgb(255, 255, 255)"> }</span>
<span style="color: rgb(100, 100, 100)"> 63: </span><span style="color: rgb(255, 255, 255)"> }</span>
<span style="color: rgb(100, 100, 100)"> 64: </span><span style="color: rgb(255, 255, 255)"> }</span>
<span style="color: rgb(100, 100, 100)"> 65: </span><span style="color: rgb(255, 255, 255)"></span>
<span style="color: rgb(100, 100, 100)"> 66: </span><span style="color: rgb(255, 255, 255)"> </span><span style="color: rgb(0, 166, 0)">return fns, nil</span><span style="color: rgb(255, 255, 255)"></span>
<span style="color: rgb(100, 100, 100)"> 67: </span><span style="color: rgb(255, 255, 255)">}</span>
<span style="color: rgb(100, 100, 100)"> 68: </span><span style="color: rgb(255, 255, 255)"></span>
</pre>
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?