MCPcopy Index your code
hub / github.com/bigskysoftware/_hyperscript / formatErrors

Method formatErrors

src/core/parser.js:41–88  ·  view source on GitHub ↗
(errors)

Source from the content-addressed store, hash-verified

39 }
40
41 static formatErrors(errors) {
42 if (!errors.length) return "";
43 var source = errors[0].source;
44 var lines = source.split("\n");
45
46 var byLine = new Map();
47 for (var e of errors) {
48 var lineIdx = e.token?.line ? e.token.line - 1 : lines.length - 1;
49 if (!byLine.has(lineIdx)) byLine.set(lineIdx, []);
50 byLine.get(lineIdx).push(e);
51 }
52
53 var maxLine = Math.max(...byLine.keys()) + 1;
54 var gutter = String(maxLine).length;
55 var pad = " ".repeat(gutter + 5);
56 var sortedLines = [...byLine.entries()].sort((a, b) => a[0] - b[0]);
57 var prevLineIdx = -1;
58 var out = "";
59
60 for (var [lineIdx, lineErrors] of sortedLines) {
61 if (prevLineIdx !== -1 && lineIdx > prevLineIdx + 1) {
62 out += " ".repeat(gutter + 1) + "...\n";
63 } else if (prevLineIdx === -1 && lineIdx > 0) {
64 out += " ".repeat(gutter + 1) + "...\n";
65 }
66 prevLineIdx = lineIdx;
67
68 var lineNum = String(lineIdx + 1).padStart(gutter);
69 var contextLine = lines[lineIdx] || "";
70 out += " " + lineNum + " | " + contextLine + "\n";
71
72 lineErrors.sort((a, b) => (a.column || 0) - (b.column || 0));
73
74 var underlineChars = Array(contextLine.length + 10).fill(" ");
75 for (var e of lineErrors) {
76 var col = e.token?.line ? e.token.column : Math.max(0, contextLine.length - 1);
77 var len = Math.max(1, e.token?.value?.length || 1);
78 for (var i = 0; i < len; i++) underlineChars[col + i] = "^";
79 }
80 out += pad + underlineChars.join("").trimEnd() + "\n";
81
82 for (var e of lineErrors) {
83 var col = e.token?.line ? e.token.column : 0;
84 out += pad + " ".repeat(col) + e.message + "\n";
85 }
86 }
87 return out;
88 }
89
90 // ===========================
91 // Token delegation methods

Callers 2

evaluateFunction · 0.45
#initElementMethod · 0.45

Calls 2

setMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected