Add generated file
This PR adds generated files under pkg/client and vendor folder.
This commit is contained in:
121
vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/language.go
generated
vendored
Normal file
121
vendor/github.com/googleapis/gnostic/plugins/gnostic-go-generator/language.go
generated
vendored
Normal file
@@ -0,0 +1,121 @@
|
||||
// Copyright 2017 Google Inc. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
surface "github.com/googleapis/gnostic/surface"
|
||||
"unicode"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type GoLanguageModel struct{}
|
||||
|
||||
func NewGoLanguageModel() *GoLanguageModel {
|
||||
return &GoLanguageModel{}
|
||||
}
|
||||
|
||||
// Prepare sets language-specific properties for all types and methods.
|
||||
func (language *GoLanguageModel) Prepare(model *surface.Model) {
|
||||
|
||||
for _, t := range model.Types {
|
||||
// determine the type used for Go language implementation of the type
|
||||
t.TypeName = strings.Title(filteredTypeName(t.Name))
|
||||
|
||||
for _, f := range t.Fields {
|
||||
f.FieldName = goFieldName(f.Name)
|
||||
f.ParameterName = goParameterName(f.Name)
|
||||
switch f.Type {
|
||||
case "number":
|
||||
f.NativeType = "int"
|
||||
case "integer":
|
||||
switch f.Format {
|
||||
case "int32":
|
||||
f.NativeType = "int32"
|
||||
case "int64":
|
||||
f.NativeType = "int64"
|
||||
default:
|
||||
f.NativeType = "int64"
|
||||
}
|
||||
case "object":
|
||||
f.NativeType = "{}interface"
|
||||
case "string":
|
||||
f.NativeType = "string"
|
||||
default:
|
||||
f.NativeType = strings.Title(f.Type)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, m := range model.Methods {
|
||||
m.HandlerName = "Handle" + m.Name
|
||||
m.ProcessorName = m.Name
|
||||
m.ClientName = m.Name
|
||||
}
|
||||
}
|
||||
|
||||
func goParameterName(name string) string {
|
||||
// lowercase first letter
|
||||
a := []rune(name)
|
||||
a[0] = unicode.ToLower(a[0])
|
||||
name = string(a)
|
||||
// replace dots with underscores
|
||||
name = strings.Replace(name, ".", "_", -1)
|
||||
// replaces dashes with underscores
|
||||
name = strings.Replace(name, "-", "_", -1)
|
||||
// avoid reserved words
|
||||
if name == "type" {
|
||||
return "myType"
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
func goFieldName(name string) string {
|
||||
name = strings.Replace(name, ".", "_", -1)
|
||||
name = strings.Replace(name, "-", "_", -1)
|
||||
name = snakeCaseToCamelCaseWithCapitalizedFirstLetter(name)
|
||||
// avoid integers
|
||||
if name == "200" {
|
||||
return "OK"
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
||||
func snakeCaseToCamelCaseWithCapitalizedFirstLetter(snakeCase string) (camelCase string) {
|
||||
isToUpper := false
|
||||
for _, runeValue := range snakeCase {
|
||||
if isToUpper {
|
||||
camelCase += strings.ToUpper(string(runeValue))
|
||||
isToUpper = false
|
||||
} else {
|
||||
if runeValue == '_' {
|
||||
isToUpper = true
|
||||
} else {
|
||||
camelCase += string(runeValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
camelCase = strings.Title(camelCase)
|
||||
return
|
||||
}
|
||||
|
||||
func filteredTypeName(typeName string) (name string) {
|
||||
// first take the last path segment
|
||||
parts := strings.Split(typeName, "/")
|
||||
name = parts[len(parts)-1]
|
||||
// then take the last part of a dotted name
|
||||
parts = strings.Split(name, ".")
|
||||
name = parts[len(parts)-1]
|
||||
return name
|
||||
}
|
Reference in New Issue
Block a user