Forge
csharpdeeb25a2
1using CascadeIDE.Contracts;
2
3namespace CascadeIDE.Features.Editor.Application.Presentation;
4
5/// <summary>
6/// Текст полосы **HUD banner** над редактором (ADR 0021 §9, 0085 — не путать с inline Editor HUD).
7/// Слой презентации: без DAL, без C#-сервисов; только форматирование сегментов.
8/// </summary>
9[ComputingUnit]
10public static class EditorHudBannerTextComposer
11{
12 public static string? FormatDiagnosticSummary(int errorCount, int warningCount)
13 {
14 if (errorCount > 0 && warningCount > 0)
15 return $"{errorCount} ошибок, {warningCount} предупреждений";
16 if (errorCount > 0)
17 return errorCount == 1 ? "1 ошибка" : $"{errorCount} ошибок";
18 if (warningCount > 0)
19 return warningCount == 1 ? "1 предупреждение" : $"{warningCount} предупреждений";
20 return null;
21 }
22
23 public static string? FormatReferenceOccurrenceSummary(int count)
24 {
25 if (count <= 0)
26 return null;
27 return count == 1
28 ? "1 вхождение в файле"
29 : $"{count} вхождений в файле";
30 }
31
32 public static string? Combine(string? diagnosticPart, string? referencePart)
33 {
34 if (diagnosticPart is null && referencePart is null)
35 return null;
36 if (diagnosticPart is not null && referencePart is not null)
37 return $"{diagnosticPart} · {referencePart}";
38 return diagnosticPart ?? referencePart;
39 }
40}
41
View only · write via MCP/CIDE