'use strict'; const dotty = require("dotty"); const asciiDataTable = require("ascii-data-table"); const defaultValue = require("default-value"); const buffertrim = require("buffertrim"); const renderBytes = require("./bytes"); function formatCreationDate(creationDate) { if (creationDate != null) { return creationDate.format("llll"); } else { return ""; } } function formatVolumePosition(sequenceNumber, setSize) { if (sequenceNumber != null) { return `${sequenceNumber}/${setSize}`; } else { return ""; } } function formatEncodings(encodings) { if (encodings != null) { return encodings.join(", "); } else { return ""; } } let headers = [ "ID", "Type", "System", "Volume", "Volume identifier", "Encoding", "Extent", "Creation date" ]; module.exports = function renderVolumeTable(volumeDescriptors) { let tableData = volumeDescriptors.map((descriptor, i) => { let volumeIndex = descriptor.volumeDescriptorIndex; let volumeType = descriptor.type; let systemIdentifier = defaultValue(descriptor.data.systemIdentifier, ""); let volumeIdentifier = defaultValue(descriptor.data.volumeIdentifier, ""); let extentSector = defaultValue(dotty.get(descriptor, "data.rootDirectory.extentLocation"), ""); let creationDate = formatCreationDate(descriptor.data.creationDate); let volumePosition = formatVolumePosition(descriptor.data.sequenceNumber, descriptor.data.setSize); let encodings = formatEncodings(descriptor.data.encodings); return [ volumeIndex, volumeType, systemIdentifier, volumePosition, volumeIdentifier, encodings, extentSector, creationDate ]; }); let tableDataWithHeaders = [headers].concat(tableData); return asciiDataTable.default.run(tableDataWithHeaders); };