1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /*
- Copyright 2017 The Kubernetes Authors.
- 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 explain
- import "k8s.io/kube-openapi/pkg/util/proto"
- // indentDesc is the level of indentation for descriptions.
- const indentDesc = 2
- // regularFieldsPrinter prints fields with their type and description.
- type regularFieldsPrinter struct {
- Writer *Formatter
- Error error
- }
- var _ proto.SchemaVisitor = ®ularFieldsPrinter{}
- var _ fieldsPrinter = ®ularFieldsPrinter{}
- // VisitArray prints a Array type. It is just a passthrough.
- func (f *regularFieldsPrinter) VisitArray(a *proto.Array) {
- a.SubType.Accept(f)
- }
- // VisitKind prints a Kind type. It prints each key in the kind, with
- // the type, the required flag, and the description.
- func (f *regularFieldsPrinter) VisitKind(k *proto.Kind) {
- for _, key := range k.Keys() {
- v := k.Fields[key]
- required := ""
- if k.IsRequired(key) {
- required = " -required-"
- }
- if err := f.Writer.Write("%s\t<%s>%s", key, GetTypeName(v), required); err != nil {
- f.Error = err
- return
- }
- if err := f.Writer.Indent(indentDesc).WriteWrapped("%s", v.GetDescription()); err != nil {
- f.Error = err
- return
- }
- if err := f.Writer.Write(""); err != nil {
- f.Error = err
- return
- }
- }
- }
- // VisitMap prints a Map type. It is just a passthrough.
- func (f *regularFieldsPrinter) VisitMap(m *proto.Map) {
- m.SubType.Accept(f)
- }
- // VisitPrimitive prints a Primitive type. It stops the recursion.
- func (f *regularFieldsPrinter) VisitPrimitive(p *proto.Primitive) {
- // Nothing to do. Shouldn't really happen.
- }
- // VisitReference prints a Reference type. It is just a passthrough.
- func (f *regularFieldsPrinter) VisitReference(r proto.Reference) {
- r.SubSchema().Accept(f)
- }
- // PrintFields will write the types from schema.
- func (f *regularFieldsPrinter) PrintFields(schema proto.Schema) error {
- schema.Accept(f)
- return f.Error
- }
|