From 55c9bfb46c8eac206438abd54144636593f832a1 Mon Sep 17 00:00:00 2001 From: Luciano Mammino Date: Sun, 27 Nov 2022 12:17:51 +0000 Subject: [PATCH 1/2] feat: Added extractText config option --- README.md | 1 + package-lock.json | 1 + src/BuildTOC.js | 3 ++- src/NestHeadings.js | 4 ++-- src/SimplifyResults.js | 8 ++++++-- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ffce90f..74ead26 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,7 @@ Pass a stringified JSON object (must be `JSON.parse()`-able) as an option for in | wrapperLabel | `undefined` | string | `aria-label` on element wrapping toc lists | | ul | `false` | boolean | lists are `ul` if true, `ol` if `false` | | flat | `false` | boolean | use flat list if `true`; use nested lists if false | +| extractText | `undefined` | function | A function that can be used to extract the text from the heading (if custom processing is needed). It receives the cheerio header element as argument | ## Roadmap diff --git a/package-lock.json b/package-lock.json index 5fc9009..f21946b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "eleventy-plugin-toc", "version": "1.1.5", "license": "ISC", "dependencies": { diff --git a/src/BuildTOC.js b/src/BuildTOC.js index 50ced4a..9707929 100644 --- a/src/BuildTOC.js +++ b/src/BuildTOC.js @@ -11,6 +11,7 @@ const defaults = { wrapperLabel: undefined, ul: false, flat: false, + extractText: undefined, } const BuildTOC = (text, opts) => { @@ -21,7 +22,7 @@ const BuildTOC = (text, opts) => { const $ = cheerio.load(text) - const headings = NestHeadings(tags, $) + const headings = NestHeadings(tags, opts.extractText, $) if (headings.length === 0) { return undefined diff --git a/src/NestHeadings.js b/src/NestHeadings.js index 0afedc4..0f759ef 100644 --- a/src/NestHeadings.js +++ b/src/NestHeadings.js @@ -1,10 +1,10 @@ const SimplifyResults = require('./SimplifyResults') -const NestHeadings = (tags, $) => { +const NestHeadings = (tags, extractText, $) => { const temp = {} tags.forEach(t => { - temp[t] = SimplifyResults(t, tags, $) + temp[t] = SimplifyResults(t, tags, extractText, $) }) const headings = [] diff --git a/src/SimplifyResults.js b/src/SimplifyResults.js index 72ba255..4cd9400 100644 --- a/src/SimplifyResults.js +++ b/src/SimplifyResults.js @@ -1,10 +1,14 @@ -const SimplifyResults = (tag, tags, $) => { +const SimplifyResults = (tag, tags, extractText, $) => { const results = [] $(`${tag}[id]`).each((i, el) => { const tag = el.name const id = $(el).attr('id') - const text = $(el).text().replace(' #', '') + let baseText = $(el).text() + if (typeof extractText === 'function') { + baseText = extractText($(el)) + } + let text = baseText.replace(' #', '') const hierarchy = tags.indexOf(tag) const parent = hierarchy > 0 && From fed26d26664d8cb54ce8f26e1b088c27a26c0dff Mon Sep 17 00:00:00 2001 From: Luciano Mammino Date: Sun, 27 Nov 2022 12:27:03 +0000 Subject: [PATCH 2/2] chore: fix audit warning with npm audit fix --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index f21946b..2009a13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1079,9 +1079,9 @@ "dev": true }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -1183,9 +1183,9 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "node_modules/prelude-ls": { @@ -2329,9 +2329,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -2415,9 +2415,9 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "prelude-ls": {