Skip to content

Commit 2fb06fc

Browse files
authored
Merge pull request #2 from oauth2-proxy/fix-hidden
Ensure hidden member are not enumerated and fix map names
2 parents 56ffd73 + 5cd8f2c commit 2fb06fc

File tree

3 files changed

+34
-5
lines changed

3 files changed

+34
-5
lines changed

reference-gen/pkg/generator/generator.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,15 @@ func (g *generator) buildTemplate(typesToRender map[*types.Type][]*types.Type, t
149149
"dereference": tryDereference,
150150
"fieldEmbedded": fieldEmbedded,
151151
"fieldName": fieldName,
152+
"hideMember": hideMember,
152153
"isOptionalMember": isOptionalMember,
153154
"linkForType": linkForTypeFunc(knownTypes),
154155
"renderCommentsBR": renderCommentsBR,
155156
"renderCommentsLF": renderCommentsLF,
156157
"sortedTypes": sortTypes,
157158
"typeDisplayName": typeDisplayNameFunc(knownTypes),
158159
"typeReferences": typeReferencesFunc(typesToRender, knownTypes),
160+
"visibleMembers": visibleMembers,
159161
"visibleTypes": visibleTypes,
160162
})
161163

reference-gen/pkg/generator/templates.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const packageTemplate = `
2525
const typeTemplate = `
2626
{{ define "type" }}
2727
### {{ .Name.Name }}
28-
{{- if eq .Kind "Alias" }}
28+
{{- if or (eq .Kind "Alias") (aliasDisplayName .) }}
2929
{{ if linkForType .Underlying }}
3030
#### ([{{ aliasDisplayName . }}]({{ linkForType .Underlying}}) alias)
3131
{{- else -}}
@@ -43,7 +43,7 @@ const typeTemplate = `
4343
{{ end }}
4444
{{ renderCommentsLF .CommentLines }}
4545
46-
{{ if .Members -}}
46+
{{ if visibleMembers .Members -}}
4747
| Field | Type | Description |
4848
| ----- | ---- | ----------- |
4949
{{- template "members_with_embed" . }}
@@ -53,6 +53,7 @@ const typeTemplate = `
5353

5454
const memberTemplate = `
5555
{{ define "member" }}
56+
{{- if not (hideMember .) }}
5657
| {{ backtick (fieldName .) }} | _{{- if linkForType .Type -}}
5758
[{{ typeDisplayName .Type }}]({{ linkForType .Type}})
5859
{{- else -}}
@@ -62,6 +63,7 @@ const memberTemplate = `
6263
{{ end -}}
6364
{{- if isOptionalMember . }} _(Optional)_ {{ end -}}
6465
{{- renderCommentsBR .CommentLines }} |
66+
{{- end -}}
6567
{{- end }}
6668
`
6769

reference-gen/pkg/generator/utils.go

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package generator
22

33
import (
4+
"fmt"
45
"reflect"
56
"sort"
67
"strings"
@@ -120,7 +121,11 @@ func aliasDisplayName(t *types.Type, knownTypes typeSet) string {
120121
return alias[0]
121122
}
122123

123-
return typeDisplayName(t.Underlying, knownTypes)
124+
if t.Underlying != nil {
125+
return typeDisplayName(t.Underlying, knownTypes)
126+
}
127+
128+
return ""
124129
}
125130

126131
// anchorIDForLocalType returns the #anchor string for the local type
@@ -159,6 +164,11 @@ func filterCommentTags(comments []string) []string {
159164
return out
160165
}
161166

167+
// hideMember determines if a member is to private
168+
func hideMember(m types.Member) bool {
169+
return unicode.IsLower(rune(m.Name[0]))
170+
}
171+
162172
// hideType determines if a type is to private
163173
func hideType(t *types.Type) bool {
164174
return unicode.IsLower(rune(t.Name.Name[0]))
@@ -181,6 +191,10 @@ func linkForTypeFunc(knownTypes typeSet) func(t *types.Type) string {
181191
// linkForType returns an anchor to the type if it can be generated. returns
182192
// empty string if it is not a local type or unrecognized external type.
183193
func linkForType(t *types.Type, knownTypes typeSet) string {
194+
if t == nil {
195+
return ""
196+
}
197+
184198
t = tryDereference(t) // dereference kind=Pointer
185199

186200
if knownTypes.has(t) {
@@ -242,8 +256,8 @@ func typeDisplayName(t *types.Type, knownTypes typeSet) string {
242256
types.Builtin:
243257
// noop
244258
case types.Map:
245-
// return original name
246-
return t.Name.Name
259+
// construct map based on element name
260+
return fmt.Sprintf("map[%s]%s", t.Key.Name.Name, s)
247261
default:
248262
klog.Fatalf("type %s has kind=%v which is unhandled", t.Name, t.Kind)
249263
}
@@ -284,6 +298,17 @@ func typeReferences(t *types.Type, references map[*types.Type][]*types.Type, kno
284298
return out
285299
}
286300

301+
// visibleMembers filters the members to only those that are exported
302+
func visibleMembers(in []types.Member) []types.Member {
303+
var out []types.Member
304+
for _, t := range in {
305+
if !hideMember(t) {
306+
out = append(out, t)
307+
}
308+
}
309+
return out
310+
}
311+
287312
// visibleTypes filters the types to only those that are exported
288313
func visibleTypes(in []*types.Type) []*types.Type {
289314
var out []*types.Type

0 commit comments

Comments
 (0)