| 'use strict' |
| |
| var markdownTable = require('markdown-table') |
| |
| module.exports = table |
| |
| var space = ' ' |
| var verticalBar = '|' |
| |
| // Stringify table. |
| // |
| // Creates a fenced table by default, but not in `looseTable: true` mode: |
| // |
| // ```markdown |
| // 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`: |
| // |
| // ```markdown |
| // |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 = verticalBar + space |
| end = space + verticalBar |
| } else { |
| start = verticalBar |
| end = verticalBar |
| } |
| |
| return markdownTable(result, { |
| align: node.align, |
| pad: pad, |
| start: start, |
| end: end, |
| stringLength: stringLength, |
| delimiter: spaced ? space + verticalBar + space : verticalBar |
| }) |
| } |