Merge pull request #4722 from willmendesneto/refactor-format-location

refactor(formatLocation): upgrade to ES6
This commit is contained in:
Tobias Koppers 2017-04-23 12:02:55 +02:00 committed by GitHub
commit a2ec4c8cea
1 changed files with 46 additions and 29 deletions

View File

@ -2,36 +2,53 @@
MIT License http://www.opensource.org/licenses/mit-license.php MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra Author Tobias Koppers @sokra
*/ */
module.exports = function formatLocation(loc) {
if(typeof loc === "string") "use strict";
const formatPosition = (pos) => {
if(pos === null)
return "";
const typeOfPos = typeof pos;
switch(typeOfPos) {
case "string":
return pos;
case "number":
return `${pos}`;
case "object":
if(typeof pos.line === "number" && typeof pos.column === "number")
return `${pos.line}:${pos.column}`;
else if(typeof pos.line === "number")
return `${pos.line}:?`;
else if(typeof pos.index === "number")
return `+${pos.index}`;
else
return "";
default:
return "";
}
};
const formatLocation = (loc) => {
if(loc === null)
return "";
const typeOfLoc = typeof loc;
switch(typeOfLoc) {
case "string":
return loc; return loc;
if(typeof loc === "number") case "number":
return loc + ""; return `${loc}`;
if(loc && typeof loc === "object") { case "object":
if(loc.start && loc.end) { 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) 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)}-${loc.end.column}`;
return formatPosition(loc.start) + "-" + formatPosition(loc.end); return `${formatPosition(loc.start)}-${formatPosition(loc.end)}`;
} }
if(loc.start) if(loc.start)
return formatPosition(loc.start); return formatPosition(loc.start);
return formatPosition(loc); return formatPosition(loc);
} default:
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 ""; return "";
} }
}; };
module.exports = formatLocation;