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

Method formatErrors

www/js/_hyperscript.esm.js:1101–1141  ·  view source on GitHub ↗
(errors)

Source from the content-addressed store, hash-verified

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

Callers 2

#initElementMethod · 0.45
evaluateFunction · 0.45

Calls 2

setMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected