ООП в JavaScriptКлассыmedium

Version Manager

Semantic Versioning — подход к установке версии програмного продукта. Подробнее о методологоии можно прочитать на официальном сайте semver.org.

Реализуйте класс VersionManager, позволяющий управлять версией.

Изначально конструктор VersionManager принимает начальное значение версии в виде строки. Гарантируется, что версия корректная, например 17.2.5. Если конструктор вызывается без аргумента, устанавливается начальная версия 0.1.0.

Класс должен поддерживать следующие методы. Все методы, кроме release, должны быть chainable, подробнее в примере ниже.

Методы класса

  • major() — увеличивает MAJOR на 1, устанавливает MINOR и PATCH в 0;
  • minor() — увеличивает MINOR на 1, устанавливает PATCH в 0;
  • patch() — увеличивает PATCH на 1;
  • rollback() — откатывает состояние VersionManager к предыдущему значению и бросает ошибку с сообщением "Cannot rollback!", если некуда откатывать.
  • release() — возвращает строку в формате "{MAJOR}.{MINOR}.{PATCH}".

Примеры

Чейнинг — мы можем цеплять вызовы друг к другу.

const vm = new VersionManager("2.0.3"); console.log( vm .major() // "3.0.0" .minor() // "3.1.0" .minor() // "3.2.0" .minor() // "3.3.0" .patch() // "3.3.1" .release() );

Ролбэк откатывает к предыдущей версии. Возможен множественный откат.

const vm = new VersionManager("1.2.3"); console.log( vm .minor() // "1.3.0" .major() // "2.0.0" .patch() // "2.0.1" .rollback() // "2.0.0" .rollback() // "1.3.0" .release() );