Skip to content

v2.0.0

Choose a tag to compare

@deliciousNesquik deliciousNesquik released this 07 Jul 07:42
· 18 commits to main since this release

Roman 2.0.0

Мажорный релиз с изменениями, ломающими обратную совместимость.

⚠️ Breaking changes

  • Разбор строк теперь строгий по умолчанию. Конструктор Roman(string), Parse(string) и
    TryParse(string, out) используют RomanStyle.Strict и отвергают неканонические формы
    (например, "IIII") с FormatException. Раньше поведение по умолчанию было лояльным.
    RomanStyle.Strict стал значением по умолчанию перечисления (0).
  • Арифметика бросает OverflowException вместо ArgumentOutOfRangeException. При выходе
    результата +, -, *, / за диапазон 1–3999 операнды сами по себе валидны — из диапазона
    выходит результат, поэтому семантически корректен OverflowException (без надуманного
    paramName). Проверки null по-прежнему бросают ArgumentNullException.

Migration

  • Нужен прежний лояльный разбор — используйте перегрузки с RomanStyle.Lenient:
    Roman.Parse("IIII", RomanStyle.Lenient) / Roman.TryParse("IIII", RomanStyle.Lenient, out _).
  • Ловите OverflowException (вместо ArgumentOutOfRangeException) на переполнении арифметики.

Прочее

  • Внутренний рефакторинг: единый метод нормализации строки перед разбором.
  • Обновлены README (EN/RU) и тесты; чистка форматирования.