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 */
// TODO webpack 5: pos must be SourcePosition
/** * @param {SourcePosition|DependencyLocation|string} pos position * @returns {string} formatted position */ const formatPosition = pos => { if (pos === null) return ""; // TODO webpack 5: Simplify this
if (typeof pos === "string") return pos; if (typeof pos === "number") return `${pos}`; if (typeof pos === "object") { if ("line" in pos && "column" in pos) { return `${pos.line}:${pos.column}`; } else if ("line" in pos) { return `${pos.line}:?`; } else if ("index" in pos) { // TODO webpack 5 remove this case
return `+${pos.index}`; } else { return ""; } } return ""; };
// TODO webpack 5: loc must be DependencyLocation
/** * @param {DependencyLocation|SourcePosition|string} loc location * @returns {string} formatted location */ const formatLocation = loc => { if (loc === null) return ""; // TODO webpack 5: Simplify this
if (typeof loc === "string") return loc; if (typeof loc === "number") return `${loc}`; if (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 { 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 formatPosition(loc); } return ""; };
module.exports = formatLocation;
|