Makes tables more readable for humans. Compatible with the Markdown writer plugin's table formatter feature in Atom.
- Remove redundant ending table border if the beginning has no border, so the table will not end with "|".
- Create missing ending table border if the beginning already has a border, so the table will end with "|".
- Save space by not right-padding the last column if the table has no border.
- Support empty columns inside tables.
- Support column alignment options with ":".
- Find and format multiple tables.
- Support `
code blocks` and ignore blocks with<!-- markdown-table-prettify-ignore-start -->and<!-- markdown-table-prettify-ignore-end -->. - Support indented tables (tables with borders or tab indented).
The extension is available for markdown language mode. It can either prettify a selection (Format Selection) or the entire document (Format Document).
A VSCode command called Prettify markdown tables is also available to format the currently opened document.
- The maximum texth length of a selection/entire document to consider for formatting. Default: 1M chars (limit does not apply from CLI or NPM).
- Additional languages to support formatting for besides
markdown. See possible configurable values here. Default:[ ]. - Column padding to make the columns more spaced out from each other. Default:
0(no extra spacing/padding). - Keyboard shortcut to prettify the currently opened markdown document. Default: CTRL+ALT+M (CMD+ALT+M on Mac).
The core formatting logic is available as an NPM package: npm install --save markdown-table-prettify. The Typescript code is compiled to ES2022 and shipped inside the package. Requires Node.js 16.11+.
It currently exposes the entry point also used by the CLI. It can be used from regular NodeJS or web apps:
import { CliPrettify } from 'markdown-table-prettify';
// or
const { CliPrettify } = require('markdown-table-prettify');
console.log(CliPrettify.prettify(
`hello|world
-|-
foo|bar`));
/* Output:
hello | world
------|------
foo | bar
*/
// specifying a column padding
console.log(CliPrettify.prettify(
`hello|world
-|-
foo|bar`, { columnPadding: 1 }));
/* Output:
hello | world
------ | ------
foo | bar
*/The core formatting logic is available as a node docker image: docker pull darkriszty/prettify-md or as a stand alone CLI tool.
Formatting files or checking if they're already formatted is also possible from the command line without docker. This requires node and npm (optionally also npx).
| Feature | Docker | CLI |
|---|---|---|
| Prettify a file | docker container run -i darkriszty/prettify-md < input.md |
npm run --silent prettify-md < input.md |
| Prettify a file and save the output | docker container run -i darkriszty/prettify-md < input.md > output.md |
npm run --silent prettify-md < input.md > output.md |
| Check whether a file is pretty or not | docker container run -i darkriszty/prettify-md --check < input.md |
npm run --silent check-md < input.md |
Use 1 as column padding |
docker container run -i darkriszty/prettify-md --columnPadding=1 < input.md |
npm run --silent prettify-md -- --columnPadding=1 < input.md |
Notes:
- The prettify check (
--checkorcheck-md) will fail with an exception and return code1if the file is not prettyfied.- The
--silentswitch sets the NPM log level to silent, which is useful to hide the executed file name and concentrate on the actual output.- The
--after the npm run script part is needed for npm to forward the arguments (for instance--columnPadding=1) to the actual prettyfier script.- Optionally, use
npxto prettify files:npx markdown-table-prettify < input.mdinstead ofnpm run --silent prettify-md < input.md.
To access the CLI, the extension can either be used from the Github sources, from the already installed VSCode extension or from NPM.
- Clone or download the source code.
- Run
npm install. - Run
npm run compile.
Locate the installed extension path. The typical location of the installed extension:
- Windows:
%USERPROFILE%\.vscode\extensions\darkriszty.markdown-table-prettify-{version} - macOS:
~/.vscode/extensions/darkriszty.markdown-table-prettify-{version} - Linux:
~/.vscode/extensions/darkriszty.markdown-table-prettify-{version}
Install the NPM package npm install -g markdown-table-prettify.
- Tables with mixed character widths (eg: CJK) are not always properly formatted (issue #4).
