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

Method formatErrors

tools/common/_hyperscript.iife.js:1093–1133  ·  view source on GitHub ↗
(errors)

Source from the content-addressed store, hash-verified

1091 this.tokens = tokens;
1092 }
1093 static formatErrors(errors) {
1094 if (!errors.length) return "";
1095 var source = errors[0].source;
1096 var lines = source.split("\n");
1097 var byLine = /* @__PURE__ */ new Map();
1098 for (var e of errors) {
1099 var lineIdx = e.token?.line ? e.token.line - 1 : lines.length - 1;
1100 if (!byLine.has(lineIdx)) byLine.set(lineIdx, []);
1101 byLine.get(lineIdx).push(e);
1102 }
1103 var maxLine = Math.max(...byLine.keys()) + 1;
1104 var gutter = String(maxLine).length;
1105 var pad = " ".repeat(gutter + 5);
1106 var sortedLines = [...byLine.entries()].sort((a, b) => a[0] - b[0]);
1107 var prevLineIdx = -1;
1108 var out = "";
1109 for (var [lineIdx, lineErrors] of sortedLines) {
1110 if (prevLineIdx !== -1 && lineIdx > prevLineIdx + 1) {
1111 out += " ".repeat(gutter + 1) + "...\n";
1112 } else if (prevLineIdx === -1 && lineIdx > 0) {
1113 out += " ".repeat(gutter + 1) + "...\n";
1114 }
1115 prevLineIdx = lineIdx;
1116 var lineNum = String(lineIdx + 1).padStart(gutter);
1117 var contextLine = lines[lineIdx] || "";
1118 out += " " + lineNum + " | " + contextLine + "\n";
1119 lineErrors.sort((a, b) => (a.column || 0) - (b.column || 0));
1120 var underlineChars = Array(contextLine.length + 10).fill(" ");
1121 for (var e of lineErrors) {
1122 var col = e.token?.line ? e.token.column : Math.max(0, contextLine.length - 1);
1123 var len = Math.max(1, e.token?.value?.length || 1);
1124 for (var i = 0; i < len; i++) underlineChars[col + i] = "^";
1125 }
1126 out += pad + underlineChars.join("").trimEnd() + "\n";
1127 for (var e of lineErrors) {
1128 var col = e.token?.line ? e.token.column : 0;
1129 out += pad + " ".repeat(col) + e.message + "\n";
1130 }
1131 }
1132 return out;
1133 }
1134 // ===========================
1135 // Token delegation methods
1136 // ===========================

Callers 2

#initElementMethod · 0.45
evaluateFunction · 0.45

Calls 2

setMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected