| import { |
| drawBorderTop, |
| drawBorderJoin, |
| drawBorderBottom |
| } from './drawBorder'; |
| import drawRow from './drawRow'; |
| |
| /** |
| * @param {Array} rows |
| * @param {Object} border |
| * @param {Array} columnSizeIndex |
| * @param {Array} rowSpanIndex |
| * @param {Function} drawHorizontalLine |
| * @param {boolean} singleLine |
| * @returns {string} |
| */ |
| export default (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLine, singleLine) => { |
| let output; |
| let realRowIndex; |
| let rowHeight; |
| |
| const rowCount = rows.length; |
| |
| realRowIndex = 0; |
| |
| output = ''; |
| |
| if (drawHorizontalLine(realRowIndex, rowCount)) { |
| output += drawBorderTop(columnSizeIndex, border); |
| } |
| |
| rows.forEach((row, index0) => { |
| output += drawRow(row, border); |
| |
| if (!rowHeight) { |
| rowHeight = rowSpanIndex[realRowIndex]; |
| |
| realRowIndex++; |
| } |
| |
| rowHeight--; |
| |
| if (!singleLine && rowHeight === 0 && index0 !== rowCount - 1 && drawHorizontalLine(realRowIndex, rowCount)) { |
| output += drawBorderJoin(columnSizeIndex, border); |
| } |
| }); |
| |
| if (drawHorizontalLine(realRowIndex, rowCount)) { |
| output += drawBorderBottom(columnSizeIndex, border); |
| } |
| |
| return output; |
| }; |