38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
|
/*
|
||
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
||
|
Author Tobias Koppers @sokra
|
||
|
*/
|
||
|
module.exports = function formatLocation(loc) {
|
||
|
if(typeof loc === "string")
|
||
|
return loc;
|
||
|
if(typeof loc === "number")
|
||
|
return loc + "";
|
||
|
if(loc && typeof loc === "object") {
|
||
|
if(loc.start && loc.end) {
|
||
|
if(typeof loc.start.line === "number" && typeof loc.end.line === "number" && typeof loc.end.column === "number" && loc.start.line === loc.end.line)
|
||
|
return formatPosition(loc.start) + "-" + loc.end.column;
|
||
|
return formatPosition(loc.start) + "-" + formatPosition(loc.end);
|
||
|
}
|
||
|
if(loc.start)
|
||
|
return formatPosition(loc.start);
|
||
|
return formatPosition(loc);
|
||
|
}
|
||
|
return "";
|
||
|
|
||
|
function formatPosition(pos) {
|
||
|
if(typeof pos === "string")
|
||
|
return pos;
|
||
|
if(typeof pos === "number")
|
||
|
return pos + "";
|
||
|
if(pos && typeof pos === "object") {
|
||
|
if(typeof pos.line === "number" && typeof pos.column === "number")
|
||
|
return pos.line + ":" + pos.column;
|
||
|
if(typeof pos.line === "number")
|
||
|
return pos.line + ":?";
|
||
|
if(typeof pos.index === "number")
|
||
|
return "+" + pos.index;
|
||
|
}
|
||
|
return "";
|
||
|
}
|
||
|
};
|