diff --git a/src/Page.js b/src/Page.js index 880ed32198..7dc91c9a70 100644 --- a/src/Page.js +++ b/src/Page.js @@ -343,17 +343,6 @@ class Page { .text()); } - /** - * Concatenates keywords in this.keywords to heading text in this.headings - */ - concatenateHeadingsAndKeywords() { - Object.keys(this.keywords) - .forEach((headingId) => { - const keywordString = this.keywords[headingId].join(', '); - this.headings[headingId] += ` | ${keywordString}`; - }); - } - /** * Records the dynamic or static included files into this.includedFiles * @param dependencies array of maps of the external dependency and where it is included diff --git a/src/Site.js b/src/Site.js index 6935ab8f77..1270672a17 100644 --- a/src/Site.js +++ b/src/Site.js @@ -846,7 +846,6 @@ class Site { this.pages.forEach((page) => { if (generateForAllPages || filePaths.some(filePath => page.includedFiles.has(filePath))) { page.collectHeadingsAndKeywords(); - page.concatenateHeadingsAndKeywords(); } }); this.writeSiteData(); @@ -914,7 +913,11 @@ class Site { const siteData = { enableSearch: this.siteConfig.enableSearch, pages: this.pages.filter(page => page.searchable) - .map(page => ({ headings: page.headings, ...page.frontMatter })), + .map(page => ({ + ...page.frontMatter, + headings: page.headings, + headingKeywords: page.keywords, + })), }; fs.outputJsonAsync(siteDataPath, siteData) diff --git a/test/functional/test_site/expected/siteData.json b/test/functional/test_site/expected/siteData.json index 83b3ff88d2..fe78f78d93 100644 --- a/test/functional/test_site/expected/siteData.json +++ b/test/functional/test_site/expected/siteData.json @@ -2,17 +2,38 @@ "enableSearch": true, "pages": [ { - "headings": {}, "title": "Open Bugs", "header": "header.md", "src": "bugs/index.md", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": {}, + "headingKeywords": {} }, { + "title": "Hello World", + "header": "header.md", + "footer": "footer.md", + "siteNav": "site-nav.md", + "pageNav": "default", + "pageNavTitle": "Testing Page Navigation", + "globalOverrideProperty": "Overridden by global override", + "frontMatterOverrideProperty": "Overridden by front matter override", + "globalAndFrontMatterOverrideProperty": "Overridden by front matter override", + "head": "myCustomHead.md, myCustomHead2.md", + "tags": [ + "tag-frontmatter-shown", + "tag-included-file", + "+tag-exp*", + "-tag-exp-hidden", + "-tag-site-override-shown", + "-tag-site-override-specific*" + ], + "src": "index.md", + "layout": "default", "headings": { - "panel-with-heading": "Panel with heading | panel keyword", + "panel-with-heading": "Panel with heading", "panel-without-heading-with-keyword": "Panel without heading with keyword", "panel-with-heading-with-keyword": "Panel with heading with keyword", "panel-without-src-header": "Panel without src header", @@ -25,7 +46,7 @@ "panel-with-src-from-another-markbind-site-header": "Panel with src from another Markbind site header", "panel-with-src-from-another-markbind-site-header-2": "Panel with src from another Markbind site header", "unexpanded-panel-header": "Unexpanded panel header", - "keyword-should-be-tagged-to-this-heading-not-the-panel-heading": "Keyword should be tagged to this heading, not the panel heading | panel keyword", + "keyword-should-be-tagged-to-this-heading-not-the-panel-heading": "Keyword should be tagged to this heading, not the panel heading", "panel-normal-source-content-headings": "Panel normal source content headings", "panel-source-segment-content-headings": "Panel source segment content headings", "boilerplate-test-for-panel-heading": "boilerplate test for panel heading", @@ -34,13 +55,13 @@ "normal-panel-content-heading": "Normal panel content heading", "inner-panel-header-without-src": "Inner panel header without src", "feature-list": "Feature list", - "heading-with-multiple-keywords": "Heading with multiple keywords | keyword 1, keyword 2", - "heading-with-keyword-in-panel": "Heading with keyword in panel | panel keyword", - "keyword-should-be-tagged-to-the-panel-heading-not-this-heading": "Keyword should be tagged to the panel heading, not this heading | panel keyword", - "heading-with-included-keyword": "Heading with included keyword | included keyword", - "included-heading": "Included Heading | Keyword with included heading", - "heading-with-nested-keyword": "Heading with nested keyword | nested keyword", - "heading-with-hidden-keyword": "Heading with hidden keyword | invisible keyword", + "heading-with-multiple-keywords": "Heading with multiple keywords", + "heading-with-keyword-in-panel": "Heading with keyword in panel", + "keyword-should-be-tagged-to-the-panel-heading-not-this-heading": "Keyword should be tagged to the panel heading, not this heading", + "heading-with-included-keyword": "Heading with included keyword", + "included-heading": "Included Heading", + "heading-with-nested-keyword": "Heading with nested keyword", + "heading-with-hidden-keyword": "Heading with hidden keyword", "establishing-requirements": "Establishing Requirements", "brainstorming": "Brainstorming", "user-surveys": "User surveys", @@ -48,98 +69,121 @@ "markbind-plugin-pre-render": "Markbind Plugin Pre-render", "level-6-header-outside-headingsearchindex-with-always-index-attribute-should-be-indexed": "Level 6 header (outside headingSearchIndex) with always-index attribute should be indexed" }, - "title": "Hello World", - "header": "header.md", - "footer": "footer.md", - "siteNav": "site-nav.md", - "pageNav": "default", - "pageNavTitle": "Testing Page Navigation", - "globalOverrideProperty": "Overridden by global override", - "frontMatterOverrideProperty": "Overridden by front matter override", - "globalAndFrontMatterOverrideProperty": "Overridden by front matter override", - "head": "myCustomHead.md, myCustomHead2.md", - "tags": [ - "tag-frontmatter-shown", - "tag-included-file", - "+tag-exp*", - "-tag-exp-hidden", - "-tag-site-override-shown", - "-tag-site-override-specific*" - ], - "src": "index.md", - "layout": "default" + "headingKeywords": { + "heading-with-keyword-in-panel": [ + "panel keyword" + ], + "panel-with-heading": [ + "panel keyword" + ], + "keyword-should-be-tagged-to-this-heading-not-the-panel-heading": [ + "panel keyword" + ], + "heading-with-multiple-keywords": [ + "keyword 1", + "keyword 2" + ], + "keyword-should-be-tagged-to-the-panel-heading-not-this-heading": [ + "panel keyword" + ], + "heading-with-included-keyword": [ + "included keyword" + ], + "included-heading": [ + "Keyword with included heading" + ], + "heading-with-nested-keyword": [ + "nested keyword" + ], + "heading-with-hidden-keyword": [ + "invisible keyword" + ] + } }, { - "headings": { - "feature-list": "Feature list" - }, "src": "sub_site/index.md", "title": "", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" - }, - { + "globalAndFrontMatterOverrideProperty": "Overridden by global override", "headings": { - "some-heading": "Some heading" + "feature-list": "Feature list" }, + "headingKeywords": {} + }, + { "src": "test_md_fragment.md", "title": "", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": { + "some-heading": "Some heading" + }, + "headingKeywords": {} }, { - "headings": {}, "layout": "testAfterSetup", "src": "testAfterSetup.md", "title": "Hello World", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "src": "testEmptyFrontmatter.md", "title": "Hello World", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "src": "testExternalScripts.md", "title": "Hello World", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "title": "Hello World", "head": "overwriteLayoutHead.md", "layout": "testLayout", "src": "testLayouts.md", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "title": "Hello World", "head": "overwriteLayoutHead.md", "layout": "testLayout", "src": "testLayoutsOverride.md", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "src": "testAntiFOUCStyles.md", "title": "Hello World", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": {}, + "headingKeywords": {} }, { + "title": "Anchor Generation Test", + "src": "testAnchorGeneration.md", + "layout": "default", + "globalOverrideProperty": "Overridden by global override", + "globalAndFrontMatterOverrideProperty": "Overridden by global override", "headings": { "should-have-anchor-7": "should have anchor", "should-have-anchor-20": "should have anchor", @@ -162,56 +206,57 @@ "should-have-anchor-16": "should have anchor", "should-have-anchor-17": "should have anchor" }, - "title": "Anchor Generation Test", - "src": "testAnchorGeneration.md", - "layout": "default", - "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "headingKeywords": {} }, { - "headings": { - "569-stray-space-after-tooltip": "569: Stray space after tooltip" - }, "src": "testTooltipSpacing.mbd", "title": "Tooltip Spacing Test", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": { + "569-stray-space-after-tooltip": "569: Stray space after tooltip" + }, + "headingKeywords": {} }, { - "headings": {}, "src": "testThumbnails.md", "title": "Thumbnails Test", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "src": "testPlantUML.md", "title": "PlantUML Test", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": {}, + "headingKeywords": {} }, { - "headings": { - "trying-to-access-a-page-variable": "Trying to access a page variable:", - "trying-to-access-an-imported-variable-via-namespace": "Trying to access an imported variable via namespace:" - }, "src": "testImportVariables.md", "title": "Imported Variables Test", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": { + "trying-to-access-a-page-variable": "Trying to access a page variable:", + "trying-to-access-an-imported-variable-via-namespace": "Trying to access an imported variable via namespace:" + }, + "headingKeywords": {} }, { - "headings": {}, "src": "testPanelsWithImportedVariables.md", "title": "Panels with Imported Variables Test", "layout": "default", "globalOverrideProperty": "Overridden by global override", - "globalAndFrontMatterOverrideProperty": "Overridden by global override" + "globalAndFrontMatterOverrideProperty": "Overridden by global override", + "headings": {}, + "headingKeywords": {} } ] } diff --git a/test/functional/test_site_algolia_plugin/expected/siteData.json b/test/functional/test_site_algolia_plugin/expected/siteData.json index bb19046ead..cfa950178c 100644 --- a/test/functional/test_site_algolia_plugin/expected/siteData.json +++ b/test/functional/test_site_algolia_plugin/expected/siteData.json @@ -2,12 +2,13 @@ "enableSearch": true, "pages": [ { - "headings": {}, "title": "Hello World", "footer": "footer.md", "siteNav": "site-nav.md", "src": "index.md", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} } ] } diff --git a/test/functional/test_site_convert/expected/siteData.json b/test/functional/test_site_convert/expected/siteData.json index 6580bd545a..2f51be2665 100644 --- a/test/functional/test_site_convert/expected/siteData.json +++ b/test/functional/test_site_convert/expected/siteData.json @@ -2,78 +2,88 @@ "enableSearch": true, "pages": [ { - "headings": {}, "src": "index.md", "title": "Landing Page", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "src": "Home.md", "title": "", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} }, { + "src": "Page-1.md", + "title": "", + "layout": "default", "headings": { "page-1": "Page 1" }, - "src": "Page-1.md", - "title": "", - "layout": "default" + "headingKeywords": {} }, { - "headings": {}, "src": "_Footer.md", "title": "", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "src": "_Sidebar.md", "title": "", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} }, { + "src": "about.md", + "title": "", + "layout": "default", "headings": { "about": "About" }, - "src": "about.md", - "title": "", - "layout": "default" + "headingKeywords": {} }, { - "headings": { - "topic-1": "Topic 1" - }, "header": "header.md", "siteNav": "site-nav.md", "src": "contents/topic1.md", "title": "", - "layout": "default" + "layout": "default", + "headings": { + "topic-1": "Topic 1" + }, + "headingKeywords": {} }, { - "headings": {}, "header": "header.md", "siteNav": "site-nav.md", "src": "contents/topic2.md", "title": "", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "header": "header.md", "siteNav": "site-nav.md", "src": "contents/topic3a.md", "title": "", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "header": "header.md", "siteNav": "site-nav.md", "src": "contents/topic3b.md", "title": "", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} } ] } diff --git a/test/functional/test_site_expressive_layout/expected/siteData.json b/test/functional/test_site_expressive_layout/expected/siteData.json index 4872146a60..fba7bde3c5 100644 --- a/test/functional/test_site_expressive_layout/expected/siteData.json +++ b/test/functional/test_site_expressive_layout/expected/siteData.json @@ -2,13 +2,14 @@ "enableSearch": true, "pages": [ { - "headings": { - "welcome-to-markbind": "Welcome to Markbind" - }, "footer": "footer.md", "src": "index.md", "title": "Landing Page", - "layout": "default" + "layout": "default", + "headings": { + "welcome-to-markbind": "Welcome to Markbind" + }, + "headingKeywords": {} } ] } diff --git a/test/functional/test_site_templates/test_default/expected/siteData.json b/test/functional/test_site_templates/test_default/expected/siteData.json index ad3e3ff7b6..28d819410b 100644 --- a/test/functional/test_site_templates/test_default/expected/siteData.json +++ b/test/functional/test_site_templates/test_default/expected/siteData.json @@ -2,6 +2,13 @@ "enableSearch": true, "pages": [ { + "header": "header.md", + "pageNav": 2, + "pageNavTitle": "Chapters of This Page", + "siteNav": "site-nav.md", + "src": "index.md", + "title": "Landing Page", + "layout": "default", "headings": { "heading-1": "Heading 1", "sub-heading-1-1": "Sub Heading 1.1", @@ -9,47 +16,45 @@ "heading-2": "Heading 2", "heading-3": "Heading 3" }, - "header": "header.md", - "pageNav": 2, - "pageNavTitle": "Chapters of This Page", - "siteNav": "site-nav.md", - "src": "index.md", - "title": "Landing Page", - "layout": "default" + "headingKeywords": {} }, { - "headings": { - "topic-1": "Topic 1" - }, "header": "header.md", "siteNav": "site-nav.md", "src": "contents/topic1.md", "title": "", - "layout": "default" + "layout": "default", + "headings": { + "topic-1": "Topic 1" + }, + "headingKeywords": {} }, { - "headings": {}, "header": "header.md", "siteNav": "site-nav.md", "src": "contents/topic2.md", "title": "", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "header": "header.md", "siteNav": "site-nav.md", "src": "contents/topic3a.md", "title": "", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} }, { - "headings": {}, "header": "header.md", "siteNav": "site-nav.md", "src": "contents/topic3b.md", "title": "", - "layout": "default" + "layout": "default", + "headings": {}, + "headingKeywords": {} } ] } diff --git a/test/functional/test_site_templates/test_minimal/expected/siteData.json b/test/functional/test_site_templates/test_minimal/expected/siteData.json index c508722b49..1705c4b9e5 100644 --- a/test/functional/test_site_templates/test_minimal/expected/siteData.json +++ b/test/functional/test_site_templates/test_minimal/expected/siteData.json @@ -2,13 +2,14 @@ "enableSearch": true, "pages": [ { - "headings": { - "welcome-to-markbind": "Welcome to Markbind" - }, "footer": "footer.md", "src": "index.md", "title": "Hello World", - "layout": "default" + "layout": "default", + "headings": { + "welcome-to-markbind": "Welcome to Markbind" + }, + "headingKeywords": {} } ] }