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

Method formatErrors

www/js/_hyperscript.js:1103–1143  ·  view source on GitHub ↗
(errors)

Source from the content-addressed store, hash-verified

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

Callers 2

#initElementMethod · 0.45
evaluateFunction · 0.45

Calls 2

setMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected