Fix rendering of @example comment blocks (#132821)

This commit is contained in:
Gerrit Birkeland
2021-10-07 17:22:36 -06:00
committed by GitHub
parent 6b1e7a7115
commit 3629e68250
2 changed files with 51 additions and 4 deletions

View File

@@ -87,6 +87,54 @@ suite('typescript.previewer', () => {
'*@param* `parámetroConDiacríticos` — this will not');
});
test('Should render @example blocks as code', () => {
assert.strictEqual(
tagsMarkdownPreview([
{
name: 'example',
text: 'code();'
}
], noopToResource),
'*@example* \n```\ncode();\n```'
);
});
test('Should not render @example blocks as code as if they contain a codeblock', () => {
assert.strictEqual(
tagsMarkdownPreview([
{
name: 'example',
text: 'Not code\n```\ncode();\n```'
}
], noopToResource),
'*@example* \nNot code\n```\ncode();\n```'
);
});
test('Should render @example blocks as code if they contain a <caption>', () => {
assert.strictEqual(
tagsMarkdownPreview([
{
name: 'example',
text: '<caption>Not code</caption>\ncode();'
}
], noopToResource),
'*@example* \nNot code\n```\ncode();\n```'
);
});
test('Should not render @example blocks as code if they contain a <caption> and a codeblock', () => {
assert.strictEqual(
tagsMarkdownPreview([
{
name: 'example',
text: '<caption>Not code</caption>\n```\ncode();\n```'
}
], noopToResource),
'*@example* \nNot code\n```\ncode();\n```'
);
});
test('Should render @linkcode symbol name as code', async () => {
assert.strictEqual(
plainWithLinks([
@@ -128,4 +176,3 @@ suite('typescript.previewer', () => {
'a [`husky`](file:///path/file.ts#L7%2C5) b');
});
});

View File

@@ -39,9 +39,9 @@ function getTagBodyText(
return undefined;
}
// Convert to markdown code block if it is not already one
// Convert to markdown code block if it does not already contain one
function makeCodeblock(text: string): string {
if (text.match(/^\s*[~`]{3}/g)) {
if (text.match(/^\s*[~`]{3}/m)) {
return text;
}
return '```\n' + text + '\n```';
@@ -53,7 +53,7 @@ function getTagBodyText(
// check for caption tags, fix for #79704
const captionTagMatches = text.match(/<caption>(.*?)<\/caption>\s*(\r\n|\n)/);
if (captionTagMatches && captionTagMatches.index === 0) {
return captionTagMatches[1] + '\n\n' + makeCodeblock(text.substr(captionTagMatches[0].length));
return captionTagMatches[1] + '\n' + makeCodeblock(text.substr(captionTagMatches[0].length));
} else {
return makeCodeblock(text);
}