core/formatters/validation.formatter.ts

core/formatters/validation.formatter.ts is a file in GovLab Quality. 21 lines of code and 4 definitions.

import {
    CLEAN_PANEL,
    blockedPanel,
    findingAction,
    findingHead,
    findingMessage,
} from "#configuration/strings/validation.strings";
import type { Finding } from "#types/finding.types";

const locationOf = function locationOf(finding: Finding): string {
    return finding.line > 0 ? `${finding.file}:${String(finding.line)}:${String(finding.column)}` : finding.file;
};

const renderFinding = function renderFinding(finding: Finding): string[] {
    const action =
        finding.suggestion === undefined || finding.suggestion === "" ? [] : [findingAction(finding.suggestion)];
    return [findingHead(locationOf(finding), finding.ruleId), findingMessage(finding.message), ...action];
};

export const renderPanel = function renderPanel(findings: readonly Finding[]): string {
    return findings.length === 0
        ? CLEAN_PANEL
        : [blockedPanel(findings.length), "", ...findings.flatMap(renderFinding)].join("\n");
};