diff --git a/packages/docsify-server-renderer/package-lock.json b/packages/docsify-server-renderer/package-lock.json index 1777a4c8..7c84de66 100644 --- a/packages/docsify-server-renderer/package-lock.json +++ b/packages/docsify-server-renderer/package-lock.json @@ -45,9 +45,9 @@ } }, "dompurify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.1.1.tgz", - "integrity": "sha512-NijiNVkS/OL8mdQL1hUbCD6uty/cgFpmNiuFxrmJ5YPH2cXrPKIewoixoji56rbZ6XBPmtM8GA8/sf9unlSuwg==" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.2.tgz", + "integrity": "sha512-BsGR4nDLaC5CNBnyT5I+d5pOeaoWvgVeg6Gq/aqmKYWMPR07131u60I80BvExLAJ0FQEIBQ1BTicw+C5+jOyrg==" }, "good-listener": { "version": "1.2.2", diff --git a/packages/docsify-server-renderer/package.json b/packages/docsify-server-renderer/package.json index fecc1ac2..8b1e0791 100644 --- a/packages/docsify-server-renderer/package.json +++ b/packages/docsify-server-renderer/package.json @@ -17,7 +17,7 @@ "dependencies": { "debug": "^4.3.0", "docsify": "^4.11.6", - "dompurify": "^2.1.1", + "dompurify": "^2.2.2", "node-fetch": "^2.6.0", "resolve-pathname": "^3.0.0" } diff --git a/src/plugins/search/search.js b/src/plugins/search/search.js index 5c7f38bc..aba15d0b 100644 --- a/src/plugins/search/search.js +++ b/src/plugins/search/search.js @@ -83,6 +83,7 @@ export function genIndex(path, content = '', router, depth) { const slugify = window.Docsify.slugify; const index = {}; let slug; + let title = ''; tokens.forEach(token => { if (token.type === 'heading' && token.depth <= depth) { @@ -94,7 +95,16 @@ export function genIndex(path, content = '', router, depth) { slug = router.toURL(path, { id: slugify(escapeHtml(token.text)) }); } - index[slug] = { slug, title: str, body: '' }; + if (str) { + title = str + .replace(//, '') + .replace(/{docsify-ignore}/, '') + .replace(//, '') + .replace(/{docsify-ignore-all}/, '') + .trim(); + } + + index[slug] = { slug, title: title, body: '' }; } else { if (!slug) { return; diff --git a/test/e2e/search.test.js b/test/e2e/search.test.js index 3866b425..a74f752c 100644 --- a/test/e2e/search.test.js +++ b/test/e2e/search.test.js @@ -35,4 +35,42 @@ describe('Search Plugin Tests', function() { await page.fill('input[type=search]', 'test'); await expect(page).toEqualText('.results-panel h2', 'Test Page'); }); + + test('search ignore title', async () => { + const docsifyInitConfig = { + markdown: { + homepage: ` + # Hello World + + This is the homepage. + `, + sidebar: ` + - [Home page](/) + - [GitHub Pages](github) + `, + }, + routes: { + '/github.md': ` + # GitHub Pages + + This is the GitHub Pages. + + ## GitHub Pages ignore1 + + There're three places to populate your docs for your Github repository1. + + ## GitHub Pages ignore2 {docsify-ignore} + + There're three places to populate your docs for your Github repository2. + `, + }, + scriptURLs: ['/lib/plugins/search.min.js'], + }; + await docsifyInit(docsifyInitConfig); + await page.fill('input[type=search]', 'repository1'); + await expect(page).toEqualText('.results-panel h2', 'GitHub Pages ignore1'); + await page.click('.clear-button'); + await page.fill('input[type=search]', 'repository2'); + await expect(page).toEqualText('.results-panel h2', 'GitHub Pages ignore2'); + }); });