Эта библиотека облегчает работу с семантическими версиями
Библиотека позволяет читать из строк и сравнивать версии, а так же диапазоны версий семантического версионирования (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 можно подсмотреть больше примеров из тестов.
Для установки необходимо:
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.2, <1)Они состоят из знака операции и строкового представления версии. Возможные знаки операции:
< Меньше<= Меньше или равно> Больше>= Больше или рано= Равно. (по умолчанию) используется, если знак операции не заданПримеры,
>=1.2.3<1.3.0~1.2.3, ~1.2, ~1)Примеры, диапазонов с тильдой.
~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)^1.2.3, ^0.2.5, ^0.0.4)Диапазон каретки используется, если совместимость 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.01.2.x, 1.X, 1.2.*, *Любой из символов 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.