Skip to content

Commit 946f7cf

Browse files
committed
Add HTML escaping for code examples in API documentation components
1 parent 7e20fb3 commit 946f7cf

File tree

8 files changed

+28
-14
lines changed

8 files changed

+28
-14
lines changed

public/js/components/api-keys/api-endpoint-base.js

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,20 @@ export class ApiEndpointBase extends BaseComponent {
1313
this._activeCodeTab = 'curl';
1414
}
1515

16+
/**
17+
* Escape HTML characters to prevent rendering as HTML
18+
* @param {string} str - String to escape
19+
* @returns {string} - Escaped string
20+
*/
21+
escapeHtml(str) {
22+
return str
23+
.replace(/&/g, '&')
24+
.replace(/</g, '&lt;')
25+
.replace(/>/g, '&gt;')
26+
.replace(/"/g, '&quot;')
27+
.replace(/'/g, '&#039;');
28+
}
29+
1630
/**
1731
* Get the component's styles
1832
* @returns {string} - CSS styles
@@ -234,37 +248,37 @@ export class ApiEndpointBase extends BaseComponent {
234248
235249
<div class="code-content ${this._activeCodeTab === 'curl' ? 'active' : ''}" data-code="curl" style="display: ${this._activeCodeTab === 'curl' ? 'block' : 'none'}">
236250
<div class="code-block">
237-
<pre>${examples.curl}</pre>
251+
<pre>${this.escapeHtml(examples.curl)}</pre>
238252
</div>
239253
</div>
240254
241255
<div class="code-content ${this._activeCodeTab === 'fetch' ? 'active' : ''}" data-code="fetch" style="display: ${this._activeCodeTab === 'fetch' ? 'block' : 'none'}">
242256
<div class="code-block">
243-
<pre>${examples.fetch}</pre>
257+
<pre>${this.escapeHtml(examples.fetch)}</pre>
244258
</div>
245259
</div>
246260
247261
<div class="code-content ${this._activeCodeTab === 'nodejs' ? 'active' : ''}" data-code="nodejs" style="display: ${this._activeCodeTab === 'nodejs' ? 'block' : 'none'}">
248262
<div class="code-block">
249-
<pre>${examples.nodejs}</pre>
263+
<pre>${this.escapeHtml(examples.nodejs)}</pre>
250264
</div>
251265
</div>
252266
253267
<div class="code-content ${this._activeCodeTab === 'python' ? 'active' : ''}" data-code="python" style="display: ${this._activeCodeTab === 'python' ? 'block' : 'none'}">
254268
<div class="code-block">
255-
<pre>${examples.python}</pre>
269+
<pre>${this.escapeHtml(examples.python)}</pre>
256270
</div>
257271
</div>
258272
259273
<div class="code-content ${this._activeCodeTab === 'php' ? 'active' : ''}" data-code="php" style="display: ${this._activeCodeTab === 'php' ? 'block' : 'none'}">
260274
<div class="code-block">
261-
<pre>${examples.php}</pre>
275+
<pre>${this.escapeHtml(examples.php)}</pre>
262276
</div>
263277
</div>
264278
265279
<div class="code-content ${this._activeCodeTab === 'ruby' ? 'active' : ''}" data-code="ruby" style="display: ${this._activeCodeTab === 'ruby' ? 'block' : 'none'}">
266280
<div class="code-block">
267-
<pre>${examples.ruby}</pre>
281+
<pre>${this.escapeHtml(examples.ruby)}</pre>
268282
</div>
269283
</div>
270284
</div>
@@ -313,7 +327,7 @@ export class ApiEndpointBase extends BaseComponent {
313327
return `
314328
<div class="section-title">Response</div>
315329
<div class="code-block">
316-
<pre>${responseExample}</pre>
330+
<pre>${this.escapeHtml(responseExample)}</pre>
317331
</div>
318332
`;
319333
}

public/js/components/api-keys/api-html-to-doc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ puts 'Word document saved to document.doc'`
191191
192192
<div class="section-title">Example Request</div>
193193
<div class="code-block">
194-
<pre>${this._requestExample}</pre>
194+
<pre>${this.escapeHtml(this._requestExample)}</pre>
195195
</div>
196196
197197
${this.renderCodeExamples(this._codeExamples)}

public/js/components/api-keys/api-html-to-epub.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ puts 'EPUB saved to document.epub'`
217217
218218
<div class="section-title">Example Request</div>
219219
<div class="code-block">
220-
<pre>${this._requestExample}</pre>
220+
<pre>${this.escapeHtml(this._requestExample)}</pre>
221221
</div>
222222
223223
${this.renderCodeExamples(this._codeExamples)}

public/js/components/api-keys/api-html-to-excel.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ puts 'Excel file saved to document.xlsx'`
204204
205205
<div class="section-title">Example Request</div>
206206
<div class="code-block">
207-
<pre>${this._requestExample}</pre>
207+
<pre>${this.escapeHtml(this._requestExample)}</pre>
208208
</div>
209209
210210
${this.renderCodeExamples(this._codeExamples)}

public/js/components/api-keys/api-html-to-markdown.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ puts 'Markdown file saved to document.md'`
192192
193193
<div class="section-title">Example Request</div>
194194
<div class="code-block">
195-
<pre>${this._requestExample}</pre>
195+
<pre>${this.escapeHtml(this._requestExample)}</pre>
196196
</div>
197197
198198
${this.renderCodeExamples(this._codeExamples)}

public/js/components/api-keys/api-html-to-pdf.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ puts 'PDF saved to document.pdf'`
282282
283283
<div class="section-title">Example Request</div>
284284
<div class="code-block">
285-
<pre>${this._requestExample}</pre>
285+
<pre>${this.escapeHtml(this._requestExample)}</pre>
286286
</div>
287287
288288
${this.renderCodeExamples(this._codeExamples)}

public/js/components/api-keys/api-html-to-ppt.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ puts 'PowerPoint file saved to document.pptx'`
204204
205205
<div class="section-title">Example Request</div>
206206
<div class="code-block">
207-
<pre>${this._requestExample}</pre>
207+
<pre>${this.escapeHtml(this._requestExample)}</pre>
208208
</div>
209209
210210
${this.renderCodeExamples(this._codeExamples)}

public/js/components/api-keys/api-markdown-to-html.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ puts 'HTML file saved to document.html'`
192192
193193
<div class="section-title">Example Request</div>
194194
<div class="code-block">
195-
<pre>${this._requestExample}</pre>
195+
<pre>${this.escapeHtml(this._requestExample)}</pre>
196196
</div>
197197
198198
${this.renderCodeExamples(this._codeExamples)}

0 commit comments

Comments
 (0)