Files
30-seconds-of-code/node_modules/remark-stringify/lib/visitors/table.js
2019-08-20 15:52:05 +02:00

67 lines
1.2 KiB
JavaScript

'use strict';
var markdownTable = require('markdown-table');
module.exports = table;
/* Stringify table.
*
* Creates a fenced table by default, but not in
* `looseTable: true` mode:
*
* Foo | Bar
* :-: | ---
* Baz | Qux
*
* NOTE: Be careful with `looseTable: true` mode, as a
* loose table inside an indented code block on GitHub
* renders as an actual table!
*
* Creates a spaced table by default, but not in
* `spacedTable: false`:
*
* |Foo|Bar|
* |:-:|---|
* |Baz|Qux|
*/
function table(node) {
var self = this;
var options = self.options;
var loose = options.looseTable;
var spaced = options.spacedTable;
var pad = options.paddedTable;
var stringLength = options.stringLength;
var rows = node.children;
var index = rows.length;
var exit = self.enterTable();
var result = [];
var start;
var end;
while (index--) {
result[index] = self.all(rows[index]);
}
exit();
if (loose) {
start = '';
end = '';
} else if (spaced) {
start = '| ';
end = ' |';
} else {
start = '|';
end = '|';
}
return markdownTable(result, {
align: node.align,
pad: pad,
start: start,
end: end,
stringLength: stringLength,
delimiter: spaced ? ' | ' : '|'
});
}