UNPKG

tracey-cli

Version:
63 lines (62 loc) 3.52 kB
"use strict"; 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;