Skip to content

Commit 630438d

Browse files
committed
Fix markdown links to multi-version CRDs
This change will break existing links in custom Markdown templates, as it now uses GroupVersionID to link to resources. To fix this, replace `## {{ $gv.GroupVersionString }}` in gv_details.tpl with `## <a id="{{ markdownGroupVersionID $gv | markdownSafeID }}">{{ $gv.GroupVersionString }}</a>`.
1 parent 19745cf commit 630438d

File tree

7 files changed

+103
-112
lines changed

7 files changed

+103
-112
lines changed

renderer/markdown.go

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,31 +113,22 @@ func (m *MarkdownRenderer) RenderTypeLink(t *types.Type) string {
113113
}
114114

115115
if local {
116-
return m.RenderLocalLink(text)
116+
return m.RenderLocalLink(link, text)
117117
} else {
118118
return m.RenderExternalLink(link, text)
119119
}
120120
}
121121

122-
func (m *MarkdownRenderer) RenderLocalLink(text string) string {
123-
anchor := strings.ToLower(
124-
strings.NewReplacer(
125-
" ", "-",
126-
".", "",
127-
"/", "",
128-
"(", "",
129-
")", "",
130-
).Replace(text),
131-
)
132-
return fmt.Sprintf("[%s](#%s)", text, anchor)
122+
func (m *MarkdownRenderer) RenderLocalLink(link, text string) string {
123+
return fmt.Sprintf("[%s](#%s)", text, link)
133124
}
134125

135126
func (m *MarkdownRenderer) RenderExternalLink(link, text string) string {
136127
return fmt.Sprintf("[%s](%s)", text, link)
137128
}
138129

139130
func (m *MarkdownRenderer) RenderGVLink(gv types.GroupVersionDetails) string {
140-
return m.RenderLocalLink(gv.GroupVersionString())
131+
return m.RenderLocalLink(m.GroupVersionID(gv), gv.GroupVersionString())
141132
}
142133

143134
func (m *MarkdownRenderer) RenderFieldDoc(text string) string {

templates/markdown/gv_details.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{- define "gvDetails" -}}
22
{{- $gv := . -}}
33

4-
## {{ $gv.GroupVersionString }}
4+
## <a id="{{ markdownGroupVersionID $gv | markdownSafeID }}">{{ $gv.GroupVersionString }}</a>
55

66
{{ $gv.Doc }}
77

templates/markdown/type.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{{- $type := . -}}
33
{{- if markdownShouldRenderType $type -}}
44

5-
#### {{ $type.Name }}
5+
#### <a id="{{ markdownTypeID $type | markdownSafeID }}">{{ $type.Name }}</a>
66

77
{{ if $type.IsAlias }}_Underlying type:_ _{{ markdownRenderTypeLink $type.UnderlyingType }}_{{ end }}
88

@@ -36,7 +36,7 @@ _Appears in:_
3636

3737
{{ end -}}
3838

39-
{{ if $type.EnumValues -}}
39+
{{ if $type.EnumValues -}}
4040
| Field | Description |
4141
| --- | --- |
4242
{{ range $type.EnumValues -}}

test/expected.md

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# API Reference
22

33
## Packages
4-
- [webapp.test.k8s.elastic.co/common](#webapptestk8selasticcocommon)
5-
- [webapp.test.k8s.elastic.co/v1](#webapptestk8selasticcov1)
4+
- [webapp.test.k8s.elastic.co/common](#webapp-test-k8s-elastic-co-common)
5+
- [webapp.test.k8s.elastic.co/v1](#webapp-test-k8s-elastic-co-v1)
66

77

8-
## webapp.test.k8s.elastic.co/common
8+
## <a id="webapp-test-k8s-elastic-co-common">webapp.test.k8s.elastic.co/common</a>
99

1010
Package common contains common API Schema definitions
1111

1212

1313

14-
#### CommonString
14+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-common-commonstring">CommonString</a>
1515

1616
_Underlying type:_ _string_
1717

@@ -20,25 +20,25 @@ _Underlying type:_ _string_
2020

2121

2222
_Appears in:_
23-
- [GuestbookSpec](#guestbookspec)
24-
- [GuestbookStatus](#guestbookstatus)
23+
- [GuestbookSpec](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookspec)
24+
- [GuestbookStatus](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookstatus)
2525

2626

2727

2828

29-
## webapp.test.k8s.elastic.co/v1
29+
## <a id="webapp-test-k8s-elastic-co-v1">webapp.test.k8s.elastic.co/v1</a>
3030

3131
Package v1 contains API Schema definitions for the webapp v1 API group
3232

3333
### Resource Types
34-
- [Embedded](#embedded)
35-
- [Guestbook](#guestbook)
36-
- [GuestbookList](#guestbooklist)
37-
- [Underlying](#underlying)
34+
- [Embedded](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-embedded)
35+
- [Guestbook](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbook)
36+
- [GuestbookList](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbooklist)
37+
- [Underlying](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-underlying)
3838

3939

4040

41-
#### Embedded
41+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-embedded">Embedded</a>
4242

4343

4444

@@ -59,7 +59,7 @@ Package v1 contains API Schema definitions for the webapp v1 API group
5959
| `value` _[JSON](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#json-v1-apiextensions-k8s-io)_ | | | |
6060

6161

62-
#### Embedded1
62+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-embedded1">Embedded1</a>
6363

6464

6565

@@ -68,7 +68,7 @@ Package v1 contains API Schema definitions for the webapp v1 API group
6868

6969

7070
_Appears in:_
71-
- [Embedded](#embedded)
71+
- [Embedded](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-embedded)
7272

7373
| Field | Description | Default | Validation |
7474
| --- | --- | --- | --- |
@@ -77,7 +77,7 @@ _Appears in:_
7777
| `value` _[JSON](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#json-v1-apiextensions-k8s-io)_ | | | |
7878

7979

80-
#### EmbeddedX
80+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-embeddedx">EmbeddedX</a>
8181

8282

8383

@@ -86,16 +86,16 @@ _Appears in:_
8686

8787

8888
_Appears in:_
89-
- [Embedded](#embedded)
90-
- [Embedded1](#embedded1)
89+
- [Embedded](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-embedded)
90+
- [Embedded1](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-embedded1)
9191

9292
| Field | Description | Default | Validation |
9393
| --- | --- | --- | --- |
9494
| `x` _string_ | | | |
9595
| `value` _[JSON](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#json-v1-apiextensions-k8s-io)_ | | | |
9696

9797

98-
#### Guestbook
98+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbook">Guestbook</a>
9999

100100

101101

@@ -104,17 +104,17 @@ Guestbook is the Schema for the guestbooks API.
104104

105105

106106
_Appears in:_
107-
- [GuestbookList](#guestbooklist)
107+
- [GuestbookList](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbooklist)
108108

109109
| Field | Description | Default | Validation |
110110
| --- | --- | --- | --- |
111111
| `apiVersion` _string_ | `webapp.test.k8s.elastic.co/v1` | | |
112112
| `kind` _string_ | `Guestbook` | | |
113113
| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | |
114-
| `spec` _[GuestbookSpec](#guestbookspec)_ | | \{ page:1 \} | |
114+
| `spec` _[GuestbookSpec](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookspec)_ | | \{ page:1 \} | |
115115

116116

117-
#### GuestbookEntry
117+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookentry">GuestbookEntry</a>
118118

119119

120120

@@ -123,17 +123,17 @@ GuestbookEntry defines an entry in a guest book.
123123

124124

125125
_Appears in:_
126-
- [GuestbookSpec](#guestbookspec)
126+
- [GuestbookSpec](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookspec)
127127

128128
| Field | Description | Default | Validation |
129129
| --- | --- | --- | --- |
130130
| `name` _string_ | Name of the guest (pipe \| should be escaped) | | MaxLength: 80 <br />Pattern: `0*[a-z0-9]*[a-z]*[0-9]` <br /> |
131131
| `time` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta)_ | Time of entry | | |
132132
| `comment` _string_ | Comment by guest. This can be a multi-line comment.<br />Like this one.<br />Now let's test a list:<br />* a<br />* b<br />Another isolated comment.<br />Looks good? | | Pattern: `0*[a-z0-9]*[a-z]*[0-9]*\|\s` <br /> |
133-
| `rating` _[Rating](#rating)_ | Rating provided by the guest | | Maximum: 5 <br />Minimum: 1 <br /> |
133+
| `rating` _[Rating](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-rating)_ | Rating provided by the guest | | Maximum: 5 <br />Minimum: 1 <br /> |
134134

135135

136-
#### GuestbookHeader
136+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookheader">GuestbookHeader</a>
137137

138138
_Underlying type:_ _string_
139139

@@ -142,11 +142,11 @@ GuestbookHeaders are strings to include at the top of a page.
142142

143143

144144
_Appears in:_
145-
- [GuestbookSpec](#guestbookspec)
145+
- [GuestbookSpec](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookspec)
146146

147147

148148

149-
#### GuestbookList
149+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbooklist">GuestbookList</a>
150150

151151

152152

@@ -161,10 +161,10 @@ GuestbookList contains a list of Guestbook.
161161
| `apiVersion` _string_ | `webapp.test.k8s.elastic.co/v1` | | |
162162
| `kind` _string_ | `GuestbookList` | | |
163163
| `metadata` _[ListMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#listmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | |
164-
| `items` _[Guestbook](#guestbook) array_ | | | |
164+
| `items` _[Guestbook](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbook) array_ | | | |
165165

166166

167-
#### GuestbookSpec
167+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookspec">GuestbookSpec</a>
168168

169169

170170

@@ -173,22 +173,22 @@ GuestbookSpec defines the desired state of Guestbook.
173173

174174

175175
_Appears in:_
176-
- [Guestbook](#guestbook)
176+
- [Guestbook](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbook)
177177

178178
| Field | Description | Default | Validation |
179179
| --- | --- | --- | --- |
180-
| `page` _[PositiveInt](#positiveint)_ | Page indicates the page number | 1 | Minimum: 1 <br /> |
181-
| `entries` _[GuestbookEntry](#guestbookentry) array_ | Entries contain guest book entries for the page | | |
180+
| `page` _[PositiveInt](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-positiveint)_ | Page indicates the page number | 1 | Minimum: 1 <br /> |
181+
| `entries` _[GuestbookEntry](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookentry) array_ | Entries contain guest book entries for the page | | |
182182
| `selector` _[LabelSelector](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#labelselector-v1-meta)_ | Selector selects something | | |
183-
| `headers` _[GuestbookHeader](#guestbookheader) array_ | Headers contains a list of header items to include in the page | | MaxItems: 10 <br />UniqueItems: true <br /> |
183+
| `headers` _[GuestbookHeader](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookheader) array_ | Headers contains a list of header items to include in the page | | MaxItems: 10 <br />UniqueItems: true <br /> |
184184
| `certificateRef` _[SecretObjectReference](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.SecretObjectReference)_ | CertificateRef is a reference to a secret containing a certificate | | |
185-
| `str` _[CommonString](#commonstring)_ | | | |
186-
| `enum` _[MyEnum](#myenum)_ | Enumeration is an example of an aliased enumeration type | | Enum: [MyFirstValue MySecondValue] <br /> |
185+
| `str` _[CommonString](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-common-commonstring)_ | | | |
186+
| `enum` _[MyEnum](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-myenum)_ | Enumeration is an example of an aliased enumeration type | | Enum: [MyFirstValue MySecondValue] <br /> |
187187

188188

189189

190190

191-
#### MyEnum
191+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-myenum">MyEnum</a>
192192

193193
_Underlying type:_ _string_
194194

@@ -198,15 +198,15 @@ _Validation:_
198198
- Enum: [MyFirstValue MySecondValue]
199199

200200
_Appears in:_
201-
- [GuestbookSpec](#guestbookspec)
201+
- [GuestbookSpec](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookspec)
202202

203203
| Field | Description |
204204
| --- | --- |
205205
| `MyFirstValue` | MyFirstValue is an interesting value to use<br /> |
206206
| `MySecondValue` | MySecondValue is what you use when you can't use MyFirstValue<br /> |
207207

208208

209-
#### PositiveInt
209+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-positiveint">PositiveInt</a>
210210

211211
_Underlying type:_ _integer_
212212

@@ -216,11 +216,11 @@ _Validation:_
216216
- Minimum: 1
217217

218218
_Appears in:_
219-
- [GuestbookSpec](#guestbookspec)
219+
- [GuestbookSpec](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookspec)
220220

221221

222222

223-
#### Rating
223+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-rating">Rating</a>
224224

225225
_Underlying type:_ _integer_
226226

@@ -231,13 +231,13 @@ _Validation:_
231231
- Minimum: 1
232232

233233
_Appears in:_
234-
- [GuestbookEntry](#guestbookentry)
234+
- [GuestbookEntry](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-guestbookentry)
235235

236236

237237

238238

239239

240-
#### Underlying
240+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-underlying">Underlying</a>
241241

242242

243243

@@ -252,24 +252,24 @@ Underlying tests that Underlying1's underlying type is Underlying2 instead of st
252252
| `apiVersion` _string_ | `webapp.test.k8s.elastic.co/v1` | | |
253253
| `kind` _string_ | `Underlying` | | |
254254
| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | |
255-
| `a` _[Underlying1](#underlying1)_ | | b | MaxLength: 10 <br /> |
255+
| `a` _[Underlying1](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-underlying1)_ | | b | MaxLength: 10 <br /> |
256256

257257

258-
#### Underlying1
258+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-underlying1">Underlying1</a>
259259

260-
_Underlying type:_ _[Underlying2](#underlying2)_
260+
_Underlying type:_ _[Underlying2](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-underlying2)_
261261

262262
Underlying1 has an underlying type with an underlying type
263263

264264
_Validation:_
265265
- MaxLength: 10
266266

267267
_Appears in:_
268-
- [Underlying](#underlying)
268+
- [Underlying](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-underlying)
269269

270270

271271

272-
#### Underlying2
272+
#### <a id="github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-underlying2">Underlying2</a>
273273

274274
_Underlying type:_ _string_
275275

@@ -279,7 +279,7 @@ _Validation:_
279279
- MaxLength: 10
280280

281281
_Appears in:_
282-
- [Underlying1](#underlying1)
282+
- [Underlying1](#github.zerozr99.workers.dev-elastic-crd-ref-docs-api-v1-underlying1)
283283

284284

285285

0 commit comments

Comments
 (0)