Skip to content

v1.1.1

Choose a tag to compare

@deliciousNesquik deliciousNesquik released this 17 Jun 07:12
· 26 commits to main since this release

Roman v1.1.1

Релиз добавляет строгий режим парсинга, исправляет два бага и существенно обновляет документацию. Под капотом — переезд на namespace RomanNumerals и приведённый в порядок CI.

NuGet

  • Пакет: Roman
  • Страница на NuGet: Roman
  • Описание пакета теперь рендерится прямо на NuGet (встроенный README)

Совместимость

  • Target Framework: net9.0
  • Язык: C# 13

Новое

  • Строгий режим парсинга через перечисление RomanStyle (Lenient / Strict) — по аналогии с int.Parse(string, NumberStyles):
Roman.Parse("IV", RomanStyle.Strict);    // OK → 4
Roman.Parse("IIII", RomanStyle.Strict);  // FormatException: не каноническая запись
Roman.TryParse("IIII", RomanStyle.Strict, out var r); // false
  • Новые перегрузки Parse(string, RomanStyle) и TryParse(string, RomanStyle, out Roman?). Поведение по умолчанию (лояльный разбор) не изменилось — обратная совместимость API сохранена.

Исправления

  • implicit operator int(Roman) бросал NullReferenceException на null — теперь кидает понятный ArgumentNullException.
  • ToInt(string) переполнял int-аккумулятор на сверхдлинных строках и мог молча вернуть неверное значение в диапазоне 1–3999 вместо исключения — аккумулятор переведён на long.

Улучшения

  • Устранено дублирование таблицы «символ → значение»: Map стал единственным источником истины, парсер выводит данные из него.
  • Упрощена обработка исключений в TryParse(string) (один catch вместо избыточных двух).
  • Тестовый набор расширен до 153 тестов (было 138), включая строгий режим и регрессию на переполнение.

Документация

  • README полностью переписан в open-source стиле.
  • Добавлены две языковые версии: English и Русский с переключателем языка.
  • Бейджи приведены в соответствие с проектом (.NET 9 / C# 13).

Важно при обновлении

  • Изменён namespace: RomanRomanNumerals. Имя типа осталось Roman. Обновите using:
using RomanNumerals;
var roman = new Roman("X");

Что внутри

  • Библиотека RomanNumerals (PackageId остался Roman)
  • Набор тестов RomanNumerals.Tests (MSTest)

Установка

dotnet add package Roman --version 1.1.1

Полный список изменений: v1.0.0...v1.1.1