podman
87 строк · 1.8 Кб
1// Copyright 2015 go-swagger maintainers
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package swag16
17import "unicode"18
19type (20nameLexem interface {21GetUnsafeGoName() string22GetOriginal() string23IsInitialism() bool24}25
26initialismNameLexem struct {27original string28matchedInitialism string29}30
31casualNameLexem struct {32original string33}34)
35
36func newInitialismNameLexem(original, matchedInitialism string) *initialismNameLexem {37return &initialismNameLexem{38original: original,39matchedInitialism: matchedInitialism,40}41}
42
43func newCasualNameLexem(original string) *casualNameLexem {44return &casualNameLexem{45original: original,46}47}
48
49func (l *initialismNameLexem) GetUnsafeGoName() string {50return l.matchedInitialism51}
52
53func (l *casualNameLexem) GetUnsafeGoName() string {54var first rune55var rest string56for i, orig := range l.original {57if i == 0 {58first = orig59continue60}61if i > 0 {62rest = l.original[i:]63break64}65}66if len(l.original) > 1 {67return string(unicode.ToUpper(first)) + lower(rest)68}69
70return l.original71}
72
73func (l *initialismNameLexem) GetOriginal() string {74return l.original75}
76
77func (l *casualNameLexem) GetOriginal() string {78return l.original79}
80
81func (l *initialismNameLexem) IsInitialism() bool {82return true83}
84
85func (l *casualNameLexem) IsInitialism() bool {86return false87}
88