You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/* MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra */
"use strict";
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */ /** @typedef {import("./Dependency").SourcePosition} SourcePosition */
/** * @param {SourcePosition} pos position * @returns {string} formatted position */ const formatPosition = pos => { if (pos && typeof pos === "object") { if ("line" in pos && "column" in pos) { return `${pos.line}:${pos.column}`; } else if ("line" in pos) { return `${pos.line}:?`; } } return ""; };
/** * @param {DependencyLocation} loc location * @returns {string} formatted location */ const formatLocation = loc => { if (loc && typeof loc === "object") { if ("start" in loc && loc.start && "end" in loc && loc.end) { if ( typeof loc.start === "object" && typeof loc.start.line === "number" && typeof loc.end === "object" && typeof loc.end.line === "number" && typeof loc.end.column === "number" && loc.start.line === loc.end.line ) { return `${formatPosition(loc.start)}-${loc.end.column}`; } else if ( typeof loc.start === "object" && typeof loc.start.line === "number" && typeof loc.start.column !== "number" && typeof loc.end === "object" && typeof loc.end.line === "number" && typeof loc.end.column !== "number" ) { return `${loc.start.line}-${loc.end.line}`; } return `${formatPosition(loc.start)}-${formatPosition(loc.end)}`; } if ("start" in loc && loc.start) { return formatPosition(loc.start); } if ("name" in loc && "index" in loc) { return `${loc.name}[${loc.index}]`; } if ("name" in loc) { return loc.name; } } return ""; };
module.exports = formatLocation;
|