go-translator/pkg/service/value.go

65 строки
1,2 КиБ
Go

package service
import (
"go/ast"
)
func addTypeByValue(s *ast.ValueSpec) (code string) {
if len(s.Values) == 0 {
return
}
value := s.Values[0]
switch v := value.(type) {
case *ast.BasicLit:
code += handleBasicLitType(v)
}
return
}
func handleValueSpecNames(names []*ast.Ident) (code string) {
nado_zapyatuyu := false
for _, name := range names {
if nado_zapyatuyu {
code += ","
}
if isPointerType {
code += "*"
}
code += handleIdentExpr(name)
nado_zapyatuyu = true
}
return
}
func handleValueSpecType(expr ast.Expr) (code string) {
switch t := expr.(type) {
case *ast.SelectorExpr:
code += handleSelectorExpr(t)
case *ast.Ident:
code += handleIdentExpr(t)
case *ast.StarExpr:
code += handleStarExpr(t)
case *ast.ArrayType:
code += handleArray(t)
}
return
}
func handleValueSpecValues(values []ast.Expr) string {
code := ""
for _, value := range values {
switch v := value.(type) {
case *ast.BasicLit:
code += handleBasicLit(v)
case *ast.BinaryExpr:
code += handleBinaryExpr(v)
case *ast.SelectorExpr:
code += handleSelectorExpr(v)
case *ast.CallExpr:
code += handleCallExpr(v)
}
}
return code
}