markdown-table-prettify
Version:
Transforms markdown tables to be more readable.
35 lines (34 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TableFactory = void 0;
var table_1 = require("../models/table");
var cell_1 = require("../models/cell");
var row_1 = require("../models/row");
var TableFactory = /** @class */ (function () {
function TableFactory(_alignmentFactory, _selectionInterpreter, _transformer, _tableIndentationDetector) {
this._alignmentFactory = _alignmentFactory;
this._selectionInterpreter = _selectionInterpreter;
this._transformer = _transformer;
this._tableIndentationDetector = _tableIndentationDetector;
}
TableFactory.prototype.getModel = function (document, range) {
var _this = this;
var lines = document.getLines(range);
if (lines == null || lines.length == 0)
throw new Error("Can't create table model from no lines.");
var rowsWithoutSeparator = lines
.filter(function (_, i) { return i != 1; })
.map(function (line) { return new row_1.Row(_this._selectionInterpreter
.splitLine(line.value)
.map(function (c) { return new cell_1.Cell(c); }), line.EOL); });
var separatorLine = lines[1];
var separator = this._selectionInterpreter.splitLine(separatorLine.value);
var alignments = separator != null && separator.length > 0
? this._alignmentFactory.createAlignments(separator)
: [];
var leftPad = this._tableIndentationDetector.getLeftPad(lines.map(function (l) { return l.value; }));
return this._transformer.process(new table_1.Table(rowsWithoutSeparator, separatorLine.EOL, alignments, leftPad));
};
return TableFactory;
}());
exports.TableFactory = TableFactory;