Библиотека позволяет читать из строк и сравнивать версии, а так же диапазоны версий семантического версионирования (semver) аннотация v2.0.0 (например, npmjs.org, pypi.org и другие)
Данная библиотека не использует регулярные выражения.
Пример работы:
- Чтение версии из файла
Версия = Версии.ВерсияИзФайла("Путь/К/Файлу");
Сообщить(Версия.ВСтроку());
- Версия из строки
Версия = Версии.ВерсияИзСтроки("1.0.0");
Сообщить(Версия.ВСтроку());
- Максимальная версия из массива версий
МассивВерсий = Новый Массив();
МассивВерсий.Добавить(ВерсияИзСтроки("1.0.2"));
МассивВерсий.Добавить(ВерсияИзСтроки("1.0.3"));
МассивВерсий.Добавить(ВерсияИзСтроки("1.0.4"));
МаксимальнаяВерсия = Версии.МаксимальнаяИзМассива(МассивВерсий);
Сообщить(МаксимальнаяВерсия.ВСтроку());
- Сравнение версий
ЗнакСравнения = Версии.СравнитьВерсии("1.0.0", "2.0");
// Пример,
// (-1) - СтрокаВерсия1 меньше (<) СтрокаВерсия2
// (1) - СтрокаВерсия1 больше (>) СтрокаВерсия2
// (0) - СтрокаВерсия1 равна (=) СтрокаВерсия2
Версия1Меньше = Версии.ВерсияМеньше("1.0.0", "2.0");
Версия1Больше = Версии.ВерсияБольше("1.0.0", "2.0");
- Соответсвие версии диапазону
Сравнение = Версии.Сравнение(">=1.0.0");
Результат = Сравнение.ПроверяемаяВерсия("1.0.2")
.ВДиапазоне();
// ИЛИ
Результат = Версии.ВерсияВДиапазоне("1.0.2", ">=1.0.0")
- Соответсвие массива версий диапазону
МассивВерсий = Новый Массив();
МассивВерсий.Добавить("1.0.2");
МассивВерсий.Добавить("1.0.3");
МассивВерсий.Добавить("1.0.4");
Сравнение = Версии.Сравнение(">=1.0.0");
Результат = Сравнение.ПроверяемыеВерсии(МассивВерсий)
.ВДиапазоне();
- Масимальная версия массива версий соотвествующая диапазону
МассивВерсий = Новый Массив();
МассивВерсий.Добавить("1.0.2");
МассивВерсий.Добавить("1.0.3");
МассивВерсий.Добавить("1.0.4");
МаксимальнаяВерсия = Версии.Сравнение(">=1.0.0")
.ПроверяемыеВерсии(МассивВерсий)
.Максимальная();
Сообщить(МаксимальнаяВерсия.ВСтроку());
- Масимальная версия массива версий между диапазонами нижний и верхний
МассивВерсий = Новый Массив();
МассивВерсий.Добавить("1.0.2");
МассивВерсий.Добавить("1.0.3");
МассивВерсий.Добавить("1.0.4");
МаксимальнаяВерсия = Версии.МаксимальнаяВерсияМежду(МассивВерсий, ">=1.0.0", "<2.0.0");
// ИЛИ
МаксимальнаяВерсия = Версии.Сравнение(">=1.0.0")
.ДобавитьДиапазон("<2.0.0")
.ПроверяемыеВерсии(МассивВерсий)
.Максимальная();
Сообщить(МаксимальнаяВерсия.ВСтроку());
Так же описание функциональности содержится в папке tests. В прилагающихся *.os можно подсмотреть больше примеров из тестов.
Для установки необходимо:
- Скачать файл semver.ospx из раздела releases
- Воспользоваться командой:
opm install -f <ПутьКФайлу>
или
opm install semver
Для чтения версии из строки и оперирования версиями реализован класс Версия.
При чтении версии из строки, в случае возникновения ошибки всегда возвращается нулевая версия (
0.0.0)
- Создание класса версия
НоваяВерсия = Новый Версия("1.0.0");
- Строковое представление класса версия
НоваяВерсия = Новый Версия("1.0.0");
Сообщить(НоваяВерсия.ВСтроку());- Сравнение версии с другими версиями
НоваяВерсия = Новый Версия("1.0.0");
ВтораяВерсия = Новый Версия("2.0.0");
Больше = НоваяВерсия.Больше(ВтораяВерсия);
БольшеИлиРавны = НоваяВерсия.БольшеИлиРавны(ВтораяВерсия);
Меньше = НоваяВерсия.Меньше(ВтораяВерсия);
МеньшеИлиРавны = НоваяВерсия.МеньшеИлиРавны(ВтораяВерсия);
- Получение ошибки при чтении версии из строки
НоваяВерсия = Новый Версия("1.0.0");
Если НоваяВерсия.Ошибка() Тогда
Сообщить(НоваяВерсия.ПолучитьОписаниеОшибки());
КонецЕсли;
Более подробно смотри в описании публичного интерфейса
Для работы с несколькими версиями реализован модуль Версии
Более подробно смотри в описании публичного интерфейса
Для работы с диапазонами версий реализован класс ДиапазонВерсий.
Данный класс реализовывает вычисление вхождения версии (или массива версии) в переданный диапазон. А так же обеспечивает чтение простых диапазонов (>=1.2), с тильдой (~), с кареткой (^) и X - диапазоны (x, X или *)
Более подробно смотри в описании публичного интерфейса
Для работы с сравнениями версий реализован класс СравнениеВерсий
Класс реализовывает ряд терминальных методов:
ВМассив()- выполняет сравнение и выгружает результат (подходящие версии) в массив (элементы класса Версия)ВМассивСтрок()- тоже самое, что иВМассив(), только элементы массива равны строковым представлениям версийМаксимальная()- выполняет сравнение и возвращает максимальный из подходящих версийВДиапазоне()- выполняет сравнение и возвращает истина или ложь, если все проверяемые элементы подошли под диапазоны сравнения
Все остальные методы возвращают этот же класс, что позволяет работать в текучем виде.
Примеры использования:
- Создание объекта сравнения версий
СравнениеВсеВерсии = Новый СравнениеВерсий(); // Диапазон по умолчанию "*"
СравнениеБольшеРавно = Новый СравнениеВерсий(">=1.0.0");
// Или через модуль Версии
СравнениеВсеВерсии = Версии.Сравнение(); // Диапазон по умолчанию "*"
СравнениеБольшеРавно = Версии.Сравнение(">=1.0.0");
- Добавление еще одного диапазона в сравнение
Сравнение = Новый СравнениеВерсий(">=1.0.0");
Сравнение.ДобавитьДиапазон("<2.0.0");
// Или через модуль Версии
Сравнение = Версии.Сравнение(">=1.0.0")
.ДобавитьДиапазон("<2.0.0");
- Добавление версии для сравнения
Сравнение = Новый СравнениеВерсий(">=1.0.0");
Сравнение.ДобавитьДиапазон("<2.0.0");
Сравнение.ПроверяемаяВерсия("1.0.0");
// Или через модуль Версии
Сравнение = Версии.Сравнение(">=1.0.0")
.ДобавитьДиапазон("<2.0.0")
.ПроверяемаяВерсия("1.0.0");
- Добавление массива версий для сравнения
МассивВерсий = Новый Массив();
МассивВерсий.Добавить("1.0.2");
МассивВерсий.Добавить("1.0.3");
МассивВерсий.Добавить("1.0.4");
Сравнение = Новый СравнениеВерсий(">=1.0.0");
Сравнение.ДобавитьДиапазон("<2.0.0");
Сравнение.ПроверяемыеВерсии(МассивВерсий);
// Или через модуль Версии
Сравнение = Версии.Сравнение(">=1.0.0")
.ДобавитьДиапазон("<2.0.0")
.ПроверяемыеВерсии(МассивВерсий);
Более подробно смотри в описании публичного интерфейса
Поддерживаются, как простые диапазоны версий >1.2.3, >=1.2, <1. так и сложные с использованием символов тильда (~), каретка(^) и X (x, X или *)
Они состоят из знака операции и строкового представления версии. Возможные знаки операции:
<Меньше<=Меньше или равно>Больше>=Больше или рано=Равно. (по умолчанию) используется, если знак операции не задан
Примеры,
>=1.2.3<1.3.0
Примеры, диапазонов с тильдой.
~1.2.3=>=1.2.3 <1.(2+1).0=>=1.2.3 <1.3.0~1.2=>=1.2.0 <1.(2+1).0=>=1.2.0 <1.3.0(Или1.2.x)~1=>=1.0.0 <(1+1).0.0=>=1.0.0 <2.0.0(Или1.x)~0.2.3=>=0.2.3 <0.(2+1).0=>=0.2.3 <0.3.0~0.2=>=0.2.0 <0.(2+1).0=>=0.2.0 <0.3.0(Или0.2.x)~0=>=0.0.0 <(0+1).0.0=>=0.0.0 <1.0.0(Или0.x)
Диапазон каретки используется, если совместимость API не сохраняется между версиями0.2.4 и 0.3.0
Примеры:
^1.2.3=>=1.2.3 <2.0.0^0.2.3=>=0.2.3 <0.3.0^0.0.3=>=0.0.3 <0.0.4
Совместно с X:
^1.2.x=>=1.2.0 <2.0.0^0.0.x=>=0.0.0 <0.1.0^0.0=>=0.0.0 <0.1.0^1.x=>=1.0.0 <2.0.0^0.x=>=0.0.0 <1.0.0
Любой из символов X, x, или * может быть использовать в диапазоне на месте номера [основной, вспомогательной, патча], например:
*=>=0.0.0(Любая версия)1.x=>=1.0.0 <2.0.0(Между основными версиями)1.2.x=>=1.2.0 <1.3.0(Mежду вспомогательными версиями)
Или без них совсем.
""(Пустая строка) =*=>=0.0.01=1.x.x=>=1.0.0 <2.0.01.2=1.2.x=>=1.2.0 <1.3.0
Документация публичного интерфейса
Доработка проводится по git-flow. Жду ваших PR.
Смотри файл LICENSE.
