suite check: заголовок правила больше не разбирается как ссылка

- заголовок правило объявляет, а не ссылается на него: при опечатке в префиксе
  одна ошибка формы давала вторую находку о неразрешённой ссылке
- числительные в итоге согласованы с существительным
This commit is contained in:
av
2026-07-27 09:55:11 +03:00
parent ccf046fb7b
commit 0b8cc125b3
3 changed files with 39 additions and 3 deletions
+17 -2
View File
@@ -77,8 +77,10 @@ func printReport(w io.Writer, rep *check.Report, s *suite.Suite, quiet bool) {
if len(findings) > 0 {
fmt.Fprintln(w)
}
fmt.Fprintf(w, "набор: %d файлов, %d тем, версия языка %d (%s)\n",
len(s.Docs), len(s.Manifest.LiveTopics()), s.Manifest.Language.Version, s.Manifest.Language.Lang)
fmt.Fprintf(w, "набор: %s, %s, версия языка %d (%s)\n",
plural(len(s.Docs), "файл", "файла", "файлов"),
plural(len(s.Manifest.LiveTopics()), "тема", "темы", "тем"),
s.Manifest.Language.Version, s.Manifest.Language.Lang)
switch {
case rep.Errors() > 0:
fmt.Fprintf(w, "ошибок: %d, предупреждений: %d\n", rep.Errors(), rep.Warnings())
@@ -89,6 +91,19 @@ func printReport(w io.Writer, rep *check.Report, s *suite.Suite, quiet bool) {
}
}
// plural согласует существительное с числом: 1 файл, 2 файла, 5 файлов.
func plural(n int, one, few, many string) string {
word := many
switch {
case n%100 >= 11 && n%100 <= 14:
case n%10 == 1:
word = one
case n%10 >= 2 && n%10 <= 4:
word = few
}
return fmt.Sprintf("%d %s", n, word)
}
func label(s check.Severity) string {
if s == check.Warning {
return "предупреждение"