Skip to content

Instantly share code, notes, and snippets.

@smagch
Last active November 12, 2018 14:37
Show Gist options
  • Save smagch/1dc41837af3f7daa2ac21cf7b4f94998 to your computer and use it in GitHub Desktop.
Save smagch/1dc41837af3f7daa2ac21cf7b4f94998 to your computer and use it in GitHub Desktop.
gftable: transform json input to GitHub Flavored markdown table

gftable

Command-line which transform JSON array input to GFM Table

Usage

$ echo '{ "rows": [ { "id": 1, "name": "Tomoya" }, { "id": 2, "name": "Tomoko" } ] }' | jq .rows | gftable

output:

| id | name |
| --- | --- |
| 1 | Tomoya |
| 2 | Tomoko |
id name
1 Tomoya
2 Tomoko
#!/usr/bin/env node
process.stdin.resume();
process.stdin.setEncoding('utf8');
let data = '';
process.stdin.on('data', chunk => {
data += chunk;
});
process.stdin.on('end', () => {
const rows = JSON.parse(data);
if (!Array.isArray(rows)) {
console.error('Table row should be an array');
process.exit(1);
}
if (!rows.length) {
return;
}
const keys = Object.keys(rows[0]);
console.log('|', keys.join(' | '), '|');
console.log('|', [ ...Array(keys.length) ].fill('---').join(' | '), '|');
for (const row of rows) {
const values = keys.map(key => row[key]);
console.log('|', values.join(' | '), '|');
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment