Skip to content

haltcase/tablemark-cli

Repository files navigation

tablemark-cli · npm version license TypeScript GitHub Actions Workflow Status

Generate markdown tables from JSON data at the command line.

Render JSON input data as a markdown table from the command line, powered by the tablemark module.

This utility supports:

  • JSON file input from a provided path
  • Data piped from stdin
  • NDJSON formatted data (newline delimited JSON)
  • And most options supported by tablemark

Installation

pnpm add --global tablemark-cli

# or
npm install --global tablemark-cli

# or
bun install --global tablemark-cli

You can also use pnpx/pnpm dlx, npx, bunx, etc. to run it without installing:

pnpx tablemark-cli input.json > output.md

# or
npx tablemark-cli input.json > output.md

# or
bunx tablemark-cli input.json > output.md

Usage

tablemark 4.0.0
> Generate markdown tables from JSON data at the command line.

ARGUMENTS:
  <input-file> - Path to input file containing JSON data (use - for stdin)

OPTIONS:
  --align <Alignment>, -a=<Alignment>                 - Alignment, can be used multiple times [default: left]
  --align-all, -A <Alignment>                         - Default alignment for all columns [default: left]
  --column <str>, -c=<str>                            - Column name, can be used multiple times [default: infer from object key]
  --descriptors, -D <ColumnDescriptors>               - Column descriptors as a JSON array, overrides --align/--column [default: none] [optional]
  --header-case, -H <HeaderCase>                      - Control the casing of column names [default: sentenceCase]
  --line-break-strategy, -l <LineBreakStrategy>       - How to handle line breaks in cell content [default: preserve]
  --line-ending, -e <str>                             - End-of-line string [default: \n] [optional]
  --max-width, -w <number>                            - Maximum content width of each column [default: Infinity]
  --overflow-strategy, -o <OverflowStrategy>          - What to do when cell content exceeds max width [default: wrap]
  --overflow-header-strategy, -O <OverflowStrategy>   - What to do when header cell content exceeds max width [default: wrap]
  --unknown-key-strategy, -u <UnknownKeyStrategy>     - What to do when an unknown key is encountered [default: ignore]
  --text-handling-strategy, -t <TextHandlingStrategy> - Which text processing method to use [default: auto]
  --wrap-width <number>                               - (Deprecated) Alias for --max-width [default: Infinity]

FLAGS:
  --count-ansi                  - Count ANSI escape codes towards content width
  --no-case-headers, -N         - (Deprecated) Disable automatic sentence casing of inferred column names
  --no-pad-header-separator, -P - Omit padding on the header separator row
  --wrap-with-gutters, -G       - Add '|' characters to wrapped rows
  --help, -h                    - show help
  --version, -v                 - print the version

To apply the align and column options to multiple columns, supply the flag multiple times, like this:

tablemark input.json > output.md -a left -a center -a right

... which will align the first three columns left, center, and right respectively.

Piped input (stdin)

In bash-like shells:

# stdin -> stdout
echo '{ "one": 1 }' | tablemark -

# redirect input file content into stdin, then to a file
tablemark - < input.json > output.md

In PowerShell:

# stdin -> stdout
'{ "one": 1 }' | tablemark -

# redirect input file content into stdin, then to a file
cat input.json | tablemark - > output.md

NDJSON

NDJSON is a form of JSON that delimits multiple JSON objects by newlines:

{"name":"trilogy","repo":"[haltcase/trilogy](https://github.com/haltcase/trilogy)","desc":"No-hassle SQLite with type-casting schema models and support for native & pure JS backends."}
{"name":"strat","repo":"[haltcase/strat](https://github.com/haltcase/strat)","desc":"Functional-ish JavaScript string formatting, with inspirations from Python."}
{"name":"tablemark-cli","repo":"[haltcase/tablemark-cli](https://github.com/haltcase/tablemark-cli)","desc":"Generate markdown tables from JSON data at the command line."}

This input from a file or stdin is supported just as if it were a JSON compatible array:

tablemark input.ndjson > output.md

See also

  • tablemark – the module used by this utility

Contributing

Search the issues if you come across any trouble, open a new one if it hasn't been posted, or, if you're able, open a pull request. Contributions of any kind are welcome in this project.

The following people have already contributed their time and effort:

Thank you!

License

MIT © Bo Lingen / haltcase

About

Generate markdown tables from JSON data at the command line.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •