diff --git a/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/docs-code-block.mts b/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/docs-code-block.mts
index cccf135afde..fab9b9fd51a 100644
--- a/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/docs-code-block.mts
+++ b/adev/shared-docs/pipeline/shared/marked/extensions/docs-code/docs-code-block.mts
@@ -38,7 +38,7 @@ export const docsCodeBlockExtension = {
if (match) {
const metadataStr = match[2].trim();
- const headerRule = /header\s*:\s*(['"`])([^'"`]+)\1/; // The 2nd capture matters here
+ const headerRule = /header\s*:\s*(['"`])(.*?)\1/; // The 2nd capture matters here
const highlightRule = /highlight\s*:\s*(.*)([^,])/;
const hideCopyRule = /hideCopy/;
const hideDollarRule = /hideDollar/;
diff --git a/adev/shared-docs/pipeline/shared/marked/test/code/code.spec.mts b/adev/shared-docs/pipeline/shared/marked/test/code/code.spec.mts
index 656f75aa183..df730c368da 100644
--- a/adev/shared-docs/pipeline/shared/marked/test/code/code.spec.mts
+++ b/adev/shared-docs/pipeline/shared/marked/test/code/code.spec.mts
@@ -7,15 +7,16 @@
*/
import {readFile} from 'fs/promises';
-import {parseMarkdown} from '../../parse.mjs';
+import {parseMarkdown, parseMarkdownAsync} from '../../parse.mjs';
import {resolve} from 'node:path';
-import {rendererContext} from '../renderer-context.mjs';
+import {rendererContext, setHighlighter} from '../renderer-context.mjs';
describe('markdown to html', () => {
let parsedMarkdown: string;
beforeAll(async () => {
const markdownContent = await readFile(resolve('./code.md'), {encoding: 'utf-8'});
parsedMarkdown = await parseMarkdown(markdownContent, rendererContext);
+ await setHighlighter();
});
it('should render symbol with link', () => {
@@ -35,4 +36,13 @@ describe('markdown to html', () => {
' Router.lastSuccessfulNavigation()',
);
});
+
+ it('should parse header with quotes inside', async () => {
+ const markdown = '```angular-ts {avoid, header: "Can\'t inject interface"}\nconst x = 1;\n```';
+ const parsed = await parseMarkdownAsync(markdown, rendererContext);
+
+ expect(parsed).toContain("Can't inject interface");
+ expect(parsed).toContain('Avoid');
+ expect(parsed).toContain("