pi-lens
Version:
Real-time code feedback for pi â LSP, linters, formatters, type-checking, structural analysis & booboo
46 lines (45 loc) âĸ 1.4 kB
JavaScript
/**
* Shared formatting utilities for the dispatch system.
*/
export const EMOJI = {
blocking: "đ´",
warning: "đĄ",
fixed: "â
",
info: "âšī¸",
silent: "đ",
none: "",
};
/**
* Format a single diagnostic for display
*/
export function formatDiagnostic(d) {
const line = d.line ? `L${d.line}: ` : "";
const indented = d.message.split("\n").join("\n ");
const fix = d.fixSuggestion ? `\n đĄ Fix: ${d.fixSuggestion}` : "";
return ` ${line}${indented}${fix}`;
}
/**
* Format a group of diagnostics with semantic header
*/
export function formatDiagnostics(diagnostics, semantic, maxDisplay = 10) {
if (diagnostics.length === 0)
return "";
const emoji = EMOJI[semantic] ?? EMOJI.warning;
let output = "";
if (semantic === "blocking") {
output += `\n${emoji} STOP â ${diagnostics.length} issue(s) must be fixed:\n`;
}
else if (semantic === "warning") {
output += `\n${emoji} ${diagnostics.length} warning(s):\n`;
}
else if (semantic === "fixed") {
output += `\n${emoji} Auto-fixed ${diagnostics.length} issue(s):\n`;
}
for (const d of diagnostics.slice(0, maxDisplay)) {
output += `${formatDiagnostic(d)}\n`;
}
if (diagnostics.length > maxDisplay) {
output += ` ... and ${diagnostics.length - maxDisplay} more\n`;
}
return output;
}