Blame view

node_modules/webpack/lib/formatLocation.js 1.27 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  /*
  	MIT License http://www.opensource.org/licenses/mit-license.php
  	Author Tobias Koppers @sokra
  */
  
  "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;
  		case "number":
  			return `${loc}`;
  		case "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);
  		default:
  			return "";
  	}
  };
  
  module.exports = formatLocation;