67 lines
1.2 KiB
JavaScript
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 ? ' | ' : '|'
|
|
});
|
|
}
|