tracey-cli
Version:
A markdown-based requirements tool
63 lines (62 loc) • 3.52 kB
JavaScript
;
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createTracelinkBlock = exports.requirementHasTracelinks = void 0;
var path_1 = __importDefault(require("path"));
var unist_util_visit_1 = __importDefault(require("unist-util-visit"));
/**
* Check if a requirement already has tracelinks
* @param requirement The requirement
*/
var requirementHasTracelinks = function (requirement) {
var output = false;
unist_util_visit_1.default(requirement.ast, 'html', function (node) {
if (node.value === '<div class="tracey tracey-plugin-tracelinktable">') {
output = true;
}
});
return output;
};
exports.requirementHasTracelinks = requirementHasTracelinks;
/** Create different mdast elements */
var createText = function (value) { return ({ type: 'text', value: value }); };
var createLink = function (value, url, title) { return ({ type: 'link', children: [createText(value)], url: url, title: title }); };
var createTableCell = function (node) { return ({ type: 'tableCell', children: [node] }); };
var createTableRow = function (children) { return ({ type: 'tableRow', children: children }); };
var createTable = function (children) { return ({ type: 'table', children: children }); };
var createHTML = function (value) { return ({ type: 'html', value: value }); };
/* Create relative Link from requirement to annotation */
var createRelativeLink = function (requirement, annotation) { return path_1.default.relative(path_1.default.parse(requirement.file).dir, annotation.file) + "#L" + annotation.line; };
/** Create cell, row, table, block */
var toLinkTableCell = function (requirement, annotation) { return createTableCell(createLink(annotation.file, createRelativeLink(requirement, annotation), annotation.file)); };
var toLineTableCell = function (annotation) { return createTableCell(createText(annotation.line.toString())); };
var toDescriptionTableCell = function (annotation) { return createTableCell(createText(annotation.description)); };
var toTableRow = function (requirement) { return function (annotation) { return createTableRow([
toLinkTableCell(requirement, annotation),
toLineTableCell(annotation),
toDescriptionTableCell(annotation),
]); }; };
var createTracelinkTableHeader = function () { return createTableRow([
createTableCell(createText('File')),
createTableCell(createText('Line')),
createTableCell(createText('Description')),
]); };
var createTracelinkTableBody = function (annotations, requirement) { return annotations.map(toTableRow(requirement)); };
var createTracelinktable = function (annotations, requirement) { return createTable(__spreadArrays([
createTracelinkTableHeader()
], createTracelinkTableBody(annotations, requirement))); };
var createTracelinkBlock = function (annotations, requirement) { return [
createHTML('<div class="tracey tracey-plugin-tracelinktable">'),
createTracelinktable(annotations, requirement),
createHTML('</div>'),
]; };
exports.createTracelinkBlock = createTracelinkBlock;