本文整理汇总了Golang中kythe/io/kythe/go/services/xrefs.Service类的典型用法代码示例。如果您正苦于以下问题:Golang Service类的具体用法?Golang Service怎么用?Golang Service使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Service类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: getTagFields
func getTagFields(xs xrefs.Service, ticket string) ([]string, error) {
reply, err := xs.Edges(ctx, &xpb.EdgesRequest{
Ticket: []string{ticket},
Kind: []string{schema.ChildOfEdge, schema.ParamEdge},
Filter: []string{schema.NodeKindFact, schema.SubkindFact, identifierFact},
})
if err != nil || len(reply.EdgeSet) == 0 {
return nil, err
}
var fields []string
nodes := xrefs.NodesMap(reply.Node)
edges := xrefs.EdgesMap(reply.EdgeSet)
switch string(nodes[ticket][schema.NodeKindFact]) + "|" + string(nodes[ticket][schema.SubkindFact]) {
case schema.FunctionKind + "|":
fields = append(fields, "f")
fields = append(fields, "arity:"+strconv.Itoa(len(edges[ticket][schema.ParamEdge])))
case schema.EnumKind + "|" + schema.EnumClassSubkind:
fields = append(fields, "g")
case schema.PackageKind + "|":
fields = append(fields, "p")
case schema.RecordKind + "|" + schema.ClassSubkind:
fields = append(fields, "c")
case schema.VariableKind + "|":
fields = append(fields, "v")
}
for _, parent := range edges[ticket][schema.ChildOfEdge] {
parentIdent := string(nodes[parent][identifierFact])
if parentIdent == "" {
continue
}
switch string(nodes[parent][schema.NodeKindFact]) + "|" + string(nodes[parent][schema.SubkindFact]) {
case schema.FunctionKind + "|":
fields = append(fields, "function:"+parentIdent)
case schema.RecordKind + "|" + schema.ClassSubkind:
fields = append(fields, "class:"+parentIdent)
case schema.EnumKind + "|" + schema.EnumClassSubkind:
fields = append(fields, "enum:"+parentIdent)
}
}
return fields, nil
}
示例2: getTagFields
func getTagFields(xs xrefs.Service, ticket string) ([]string, error) {
reply, err := xs.Edges(ctx, &gpb.EdgesRequest{
Ticket: []string{ticket},
Kind: []string{edges.ChildOf, edges.Param},
Filter: []string{facts.NodeKind, facts.Subkind, identifierFact},
})
if err != nil || len(reply.EdgeSets) == 0 {
return nil, err
}
var fields []string
nmap := xrefs.NodesMap(reply.Nodes)
emap := xrefs.EdgesMap(reply.EdgeSets)
switch string(nmap[ticket][facts.NodeKind]) + "|" + string(nmap[ticket][facts.Subkind]) {
case nodes.Function + "|":
fields = append(fields, "f")
fields = append(fields, "arity:"+strconv.Itoa(len(emap[ticket][edges.Param])))
case nodes.Enum + "|" + nodes.EnumClass:
fields = append(fields, "g")
case nodes.Package + "|":
fields = append(fields, "p")
case nodes.Record + "|" + nodes.Class:
fields = append(fields, "c")
case nodes.Variable + "|":
fields = append(fields, "v")
}
for parent := range emap[ticket][edges.ChildOf] {
parentIdent := string(nmap[parent][identifierFact])
if parentIdent == "" {
continue
}
switch string(nmap[parent][facts.NodeKind]) + "|" + string(nmap[parent][facts.Subkind]) {
case nodes.Function + "|":
fields = append(fields, "function:"+parentIdent)
case nodes.Record + "|" + nodes.Class:
fields = append(fields, "class:"+parentIdent)
case nodes.Enum + "|" + nodes.EnumClass:
fields = append(fields, "enum:"+parentIdent)
}
}
return fields, nil
}
示例3:
var (
ctx = context.Background()
xs xrefs.Service
ft filetree.Service
idx search.Service
// ls flags
lsURIs bool
filesOnly bool
dirsOnly bool
// node flags
nodeFilters string
factSizeThreshold int
// edges flags
countOnly bool
targetsOnly bool
edgeKinds string
pageToken string
pageSize int
// source/decor flags
decorSpan string
// decor flags
dirtyFile string
refFormat string
// xrefs flags
defKind, refKind, docKind string
relatedNodes bool
// search flags
suffixWildcard string
corpus string
root string
path string
language string
signature string
spanHelp = `Limit results to this span (e.g. "10-30", "b1462-b1847", "3:5-3:10")
Formats:
b\d+-b\d+ -- Byte-offsets
\d+(:\d+)?-\d+(:\d+)? -- Line offsets with optional column offsets`
cmdLS = newCommand("ls", "[--uris] [directory-uri]",
"List a directory's contents",
func(flag *flag.FlagSet) {
flag.BoolVar(&lsURIs, "uris", false, "Display files/directories as Kythe URIs")
flag.BoolVar(&filesOnly, "files", false, "Display only files")
flag.BoolVar(&dirsOnly, "dirs", false, "Display only directories")
},
func(flag *flag.FlagSet) error {
if filesOnly && dirsOnly {
return errors.New("--files and --dirs are mutually exclusive")
}
if len(flag.Args()) == 0 {
req := &ftpb.CorpusRootsRequest{}
logRequest(req)
cr, err := ft.CorpusRoots(ctx, req)
if err != nil {
return err
}
return displayCorpusRoots(cr)
}
var corpus, root, path string
switch len(flag.Args()) {
case 1:
uri, err := kytheuri.Parse(flag.Arg(0))
if err != nil {
log.Fatalf("invalid uri %q: %v", flag.Arg(0), err)
}
corpus = uri.Corpus
root = uri.Root
path = uri.Path
default:
flag.Usage()
os.Exit(1)
}
path = filepath.Join("/", path)
req := &ftpb.DirectoryRequest{
Corpus: corpus,
Root: root,
Path: path,
}
logRequest(req)
dir, err := ft.Directory(ctx, req)
if err != nil {
return err
} else if dir == nil {
return fmt.Errorf("no such directory: %q in corpus %q (root %q)", path, corpus, root)
}
if filesOnly {
dir.Subdirectory = nil
} else if dirsOnly {
dir.File = nil
//.........这里部分代码省略.........
示例4:
var (
ctx = context.Background()
xs xrefs.Service
ft filetree.Service
// ls flags
lsURIs bool
filesOnly bool
dirsOnly bool
// node flags
nodeFilters string
factSizeThreshold int
// edges flags
dotGraph bool
countOnly bool
targetsOnly bool
edgeKinds string
pageToken string
pageSize int
// callers flags
includeOverrides bool
// docs flags
// source/decor flags
decorSpan string
// decor flags
targetDefs bool
dirtyFile string
refFormat string
// xrefs flags
defKind, declKind, refKind, docKind string
relatedNodes bool
spanHelp = `Limit results to this span (e.g. "10-30", "b1462-b1847", "3:5-3:10")
Formats:
b\d+-b\d+ -- Byte-offsets
\d+(:\d+)?-\d+(:\d+)? -- Line offsets with optional column offsets`
cmdLS = newCommand("ls", "[--uris] [directory-uri]",
"List a directory's contents",
func(flag *flag.FlagSet) {
flag.BoolVar(&lsURIs, "uris", false, "Display files/directories as Kythe URIs")
flag.BoolVar(&filesOnly, "files", false, "Display only files")
flag.BoolVar(&dirsOnly, "dirs", false, "Display only directories")
},
func(flag *flag.FlagSet) error {
if filesOnly && dirsOnly {
return errors.New("--files and --dirs are mutually exclusive")
}
if len(flag.Args()) == 0 {
req := &ftpb.CorpusRootsRequest{}
logRequest(req)
cr, err := ft.CorpusRoots(ctx, req)
if err != nil {
return err
}
return displayCorpusRoots(cr)
}
var corpus, root, path string
switch len(flag.Args()) {
case 1:
uri, err := kytheuri.Parse(flag.Arg(0))
if err != nil {
log.Fatalf("invalid uri %q: %v", flag.Arg(0), err)
}
corpus = uri.Corpus
root = uri.Root
path = uri.Path
default:
flag.Usage()
os.Exit(1)
}
path = filetree.CleanDirPath(path)
req := &ftpb.DirectoryRequest{
Corpus: corpus,
Root: root,
Path: path,
}
logRequest(req)
dir, err := ft.Directory(ctx, req)
if err != nil {
return err
}
if filesOnly {
dir.Subdirectory = nil
} else if dirsOnly {
dir.File = nil
}
return displayDirectory(dir)
})
//.........这里部分代码省略.........