MCPcopy Create free account
hub / github.com/bigskysoftware/_hyperscript / formatErrors

Method formatErrors

www/js/_hyperscript-max.js:1102–1142  ·  view source on GitHub ↗
(errors)

Source from the content-addressed store, hash-verified

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

Callers 2

#initElementMethod · 0.45
evaluateFunction · 0.45

Calls 2

setMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected