mirror of
https://github.com/valitydev/thriftlint.git
synced 2024-11-06 00:05:20 +00:00
47 lines
820 B
Go
47 lines
820 B
Go
package thriftlint
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/alecthomas/go-thrift/parser"
|
|
)
|
|
|
|
// Resolve a symbol within a file to its type.
|
|
func Resolve(symbol string, file *parser.Thrift) interface{} {
|
|
parts := strings.SplitN(symbol, ".", 2)
|
|
name := symbol
|
|
target := file
|
|
if len(parts) == 2 {
|
|
target = file.Imports[parts[0]]
|
|
if target == nil {
|
|
return nil
|
|
}
|
|
name = parts[1]
|
|
if target == nil {
|
|
return nil
|
|
}
|
|
}
|
|
if t, ok := target.Constants[name]; ok {
|
|
return t
|
|
}
|
|
if t, ok := target.Enums[name]; ok {
|
|
return t
|
|
}
|
|
if t, ok := target.Exceptions[name]; ok {
|
|
return t
|
|
}
|
|
if t, ok := target.Services[name]; ok {
|
|
return t
|
|
}
|
|
if t, ok := target.Structs[name]; ok {
|
|
return t
|
|
}
|
|
if t, ok := target.Typedefs[name]; ok {
|
|
return t
|
|
}
|
|
if t, ok := target.Unions[name]; ok {
|
|
return t
|
|
}
|
|
return nil
|
|
}
|