diff --git a/lib/rule-list.ts b/lib/rule-list.ts index 09095266..7de207f4 100644 --- a/lib/rule-list.ts +++ b/lib/rule-list.ts @@ -12,6 +12,7 @@ import { getPluginRoot } from './package-json.js'; import { generateLegend } from './legend.js'; import { relative } from 'node:path'; import { COLUMN_TYPE } from './types.js'; +import { markdownTable } from 'markdown-table'; import type { Plugin, RuleDetails, @@ -109,27 +110,25 @@ function generateRulesListMarkdown( : headerStrOrFn, ]; }); - const listSpacerRow = Array.from({ length: listHeaderRow.length }).fill( - ':--' - ); // Left-align header with colon. - return [ - listHeaderRow, - listSpacerRow, - ...details - .sort(({ name: a }, { name: b }) => a.localeCompare(b)) - .map((rule: RuleDetails) => - buildRuleRow( - columns, - rule, - configsToRules, - pluginPrefix, - configEmojis, - ignoreConfig - ) - ), - ] - .map((column) => [...column, ' '].join('|')) - .join('\n'); + + return markdownTable( + [ + listHeaderRow, + ...details + .sort(({ name: a }, { name: b }) => a.localeCompare(b)) + .map((rule: RuleDetails) => + buildRuleRow( + columns, + rule, + configsToRules, + pluginPrefix, + configEmojis, + ignoreConfig + ) + ), + ], + { align: 'l' } // Left-align headers. + ); } export async function updateRulesList( diff --git a/package-lock.json b/package-lock.json index 46b29399..af1a7177 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@typescript-eslint/utils": "^5.38.1", "commander": "^9.4.0", + "markdown-table": "^3.0.2", "type-fest": "^3.0.0" }, "bin": { @@ -7429,6 +7430,15 @@ "markdown-it": "bin/markdown-it.js" } }, + "node_modules/markdown-table": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz", + "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/markdownlint": { "version": "0.26.2", "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.26.2.tgz", @@ -17456,6 +17466,11 @@ "uc.micro": "^1.0.5" } }, + "markdown-table": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz", + "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==" + }, "markdownlint": { "version": "0.26.2", "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.26.2.tgz", diff --git a/package.json b/package.json index 3528a986..14ed19a1 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "dependencies": { "@typescript-eslint/utils": "^5.38.1", "commander": "^9.4.0", + "markdown-table": "^3.0.2", "type-fest": "^3.0.0" }, "devDependencies": {